In [173]:
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import numpy as np
import cv2

import glob
import time
import tqdm

from sklearn.svm import LinearSVC
from sklearn.model_selection import GridSearchCV

from sklearn.preprocessing import StandardScaler
from skimage.feature import hog
from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle as sk_shuffle

import collections
from scipy.ndimage.measurements import label
In [174]:
# Read in car and non-car images
images = glob.glob('data_set/**/**/*.png')
cars = []
notcars = []
for image in images:
    if 'non-' in image:
        notcars.append(image)
    else:
        cars.append(image)

print(images[:10])
['data_set/non-vehicles/GTI/image3419.png', 'data_set/non-vehicles/GTI/image2707.png', 'data_set/non-vehicles/GTI/image2061.png', 'data_set/non-vehicles/GTI/image861.png', 'data_set/non-vehicles/GTI/image1568.png', 'data_set/non-vehicles/GTI/image2075.png', 'data_set/non-vehicles/GTI/image875.png', 'data_set/non-vehicles/GTI/image2713.png', 'data_set/non-vehicles/GTI/image3425.png', 'data_set/non-vehicles/GTI/image1232.png']
In [175]:
def color_hist(img, nbins=32,bins_range=(0, 256) ):    
    # Compute the histogram of the color channels separately
    channel1_hist = np.histogram(img[:,:,0], bins=nbins)
    channel2_hist = np.histogram(img[:,:,1], bins=nbins)
    channel3_hist = np.histogram(img[:,:,2], bins=nbins)
    # Concatenate the histograms into a single feature vector
    hist_features = np.concatenate((channel1_hist[0], channel2_hist[0], channel3_hist[0]))
    # Return the individual histograms, bin_centers and feature vector
    return hist_features
In [176]:
#convertin image to  1D using ravel#conver 

def bin_spatial(img, color_space='RGB', size=(32, 32)):
    # Convert image to new color space (if specified)
    if color_space != 'RGB':
        if color_space == 'HSV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
        elif color_space == 'LUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
        elif color_space == 'HLS':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
        elif color_space == 'YUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YUV)
        elif color_space == 'YCrCb':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    else: feature_image = np.copy(img)             
    # Use cv2.resize().ravel() to create the feature vector
#     features = cv2.resize(feature_image, size).ravel() 
    color1 = cv2.resize(feature_image[:,:,0], size).ravel()
    color2 = cv2.resize(feature_image[:,:,1], size).ravel()
    color3 = cv2.resize(feature_image[:,:,2], size).ravel()
    return np.hstack((color1, color2, color3))
    # Return the feature vector
    return features
In [177]:
def get_hog_features(img, orient, pix_per_cell, cell_per_block, vis=False, feature_vec=True):

    if vis == True:
        # Use skimage.hog() to get both features and a visualization
        features, hog_image = hog(img, orientations=orient,pixels_per_cell=(pix_per_cell, pix_per_cell), cells_per_block=(cell_per_block, cell_per_block), visualise=True, feature_vector=False)

        return features, hog_image
    else:      
        # Use skimage.hog() to get features only
        features = hog(img, orientations=orient,pixels_per_cell=(pix_per_cell, pix_per_cell), cells_per_block=(cell_per_block, cell_per_block), visualise=False, feature_vector=feature_vec)
        return features
In [178]:
# Define a function to extract features from a list of images
# Have this function call bin_spatial() and color_hist()
def extract_features(imgs, color_space='RGB', spatial_size=(32, 32),
                        hist_bins=32, orient=9, 
                        pix_per_cell=8, cell_per_block=2, hog_channel=0,
                        spatial_feat=True, hist_feat=True, hog_feat=True):
    # Create a list to append feature vectors to
    features = []
    # Iterate through the list of images
    for file in imgs:
        file_features = []
        # Read in each one by one
        image = mpimg.imread(file)
        # apply color conversion if other than 'RGB'
        if color_space != 'RGB':
            if color_space == 'HSV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
            elif color_space == 'LUV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2LUV)
            elif color_space == 'HLS':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2HLS)
            elif color_space == 'YUV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2YUV)
            elif color_space == 'YCrCb':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2YCrCb)
        else: feature_image = np.copy(image)      

        if spatial_feat == True:
            spatial_features = bin_spatial(feature_image, size=spatial_size)
            file_features.append(spatial_features)
        if hist_feat == True:
            # Apply color_hist()
            hist_features = color_hist(feature_image, nbins=hist_bins)
            file_features.append(hist_features)
        if hog_feat == True:
        # Call get_hog_features() with vis=False, feature_vec=True
            if hog_channel == 'ALL':
                hog_features = []
                for channel in range(feature_image.shape[2]):
                    hog_features.append(get_hog_features(feature_image[:,:,channel], 
                                        orient, pix_per_cell, cell_per_block, 
                                        vis=False, feature_vec=True))
                hog_features = np.ravel(hog_features)        
            else:
                hog_features = get_hog_features(feature_image[:,:,hog_channel], orient, 
                            pix_per_cell, cell_per_block, vis=False, feature_vec=True)
            # Append the new feature vector to the features list
            file_features.append(hog_features)
        features.append(np.concatenate(file_features))
    # Return list of feature vectors
    return features
In [179]:
color_space = 'YCrCb' # Can be RGB, HSV, LUV, HLS, YUV, YCrCb
orient = 9  # HOG orientations
pix_per_cell = 8 # HOG pixels per cell
cell_per_block = 2 # HOG cells per block
hog_channel = "ALL" # Can be 0, 1, 2, or "ALL"
spatial_size = (32, 32) # Spatial binning dimensions
hist_bins = 32   # Number of histogram bins
spatial_feat = True # Spatial features on or off
hist_feat = True # Histogram features on or off
hog_feat = True # HOG features on or off

car_features = extract_features(cars, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat)
notcar_features = extract_features(notcars, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat)
In [180]:
# Create an array stack of feature vectors
X = np.vstack((car_features, notcar_features)).astype(np.float64)

# Define the labels vector
y = np.hstack((np.ones(len(car_features)), np.zeros(len(notcar_features))))

# Split up data into randomized training and test sets
rand_state = np.random.randint(0, 100)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=rand_state)
    
# Fit a per-column scaler
X_scaler = StandardScaler().fit(X_train)
# Apply the scaler to X
X_train = X_scaler.transform(X_train)
X_test = X_scaler.transform(X_test)
In [181]:
print('Using:',orient,'orientations',pix_per_cell,
    'pixels per cell and', cell_per_block,'cells per block')
print('Feature vector length:', len(X_train[0]))
# Use a linear SVC 
svc = LinearSVC()
# Check the training time for the SVC
t=time.time()
svc.fit(X_train, y_train)
t2 = time.time()
print(round(t2-t, 2), 'Seconds to train SVC...')
# Check the score of the SVC
print('Test Accuracy of SVC = ', round(svc.score(X_test, y_test), 4))
# Check the prediction time for a single sample
t=time.time()
Using: 9 orientations 8 pixels per cell and 2 cells per block
Feature vector length: 8460
6.69 Seconds to train SVC...
Test Accuracy of SVC =  0.9935
In [182]:
def draw_boxes(img, bboxes, color=(255, 0, 0), thick=6):
    imcopy = np.copy(img) # Make a copy of the image
    for bbox in bboxes: # Iterate through the bounding boxes
        cv2.rectangle(imcopy, bbox[0], bbox[1], color, thick)
    return imcopy
    
    
# Define a function that takes an image,
# start and stop positions in both x and y, 
# window size (x and y dimensions),  
# and overlap fraction (for both x and y)
def slide_window(img, x_start_stop=[None, None], y_start_stop=[None, None], 
                    xy_window=(64, 64), xy_overlap=(0.5, 0.5)):
    # If x and/or y start/stop positions not defined, set to image size
    if x_start_stop[0] == None:
        x_start_stop[0] = 0
    if x_start_stop[1] == None:
        x_start_stop[1] = img.shape[1]
    if y_start_stop[0] == None:
        y_start_stop[0] = 0
    if y_start_stop[1] == None:
        y_start_stop[1] = img.shape[0]
    # Compute the span of the region to be searched    
    xspan = x_start_stop[1] - x_start_stop[0]
    yspan = y_start_stop[1] - y_start_stop[0]
    # Compute the number of pixels per step in x/y
    nx_pix_per_step = np.int(xy_window[0]*(1 - xy_overlap[0]))
    ny_pix_per_step = np.int(xy_window[1]*(1 - xy_overlap[1]))
    # Compute the number of windows in x/y
    nx_buffer = np.int(xy_window[0]*(xy_overlap[0]))
    ny_buffer = np.int(xy_window[1]*(xy_overlap[1]))
    nx_windows = np.int((xspan-nx_buffer)/nx_pix_per_step) 
    ny_windows = np.int((yspan-ny_buffer)/ny_pix_per_step) 
    # Initialize a list to append window positions to
    window_list = []
    # Loop through finding x and y window positions
    # Note: you could vectorize this step, but in practice
    # you'll be considering windows one by one with your
    # classifier, so looping makes sense
    for ys in range(ny_windows):
        for xs in range(nx_windows):
            # Calculate window position
            startx = xs*nx_pix_per_step + x_start_stop[0]
            endx = startx + xy_window[0]
            starty = ys*ny_pix_per_step + y_start_stop[0]
            endy = starty + xy_window[1]
            # Append window position to list
            window_list.append(((startx, starty), (endx, endy)))
    # Return the list of windows
    return window_list

car_images = glob.glob('test_images/test*.jpg')

img = mpimg.imread(car_images[0])
windows = slide_window(img, x_start_stop=[None, None], y_start_stop=[400, 700], 
                    xy_window=(128, 128), xy_overlap=(0.5, 0.5))
                       
window_img = draw_boxes(img, windows, color=(0, 0, 255), thick=6)                    
plt.imshow(window_img)
plt.show()

img = mpimg.imread(car_images[0])
windows = slide_window(img, x_start_stop=[None, None], y_start_stop=[400, 700], 
                    xy_window=(96, 96), xy_overlap=(0.5, 0.5))
                       
window_img = draw_boxes(img, windows, color=(0, 0, 255), thick=6)                    
plt.imshow(window_img)
plt.show()
In [183]:
def single_img_features(img, color_space='RGB', spatial_size=(32, 32),
                        hist_bins=32, orient=9, 
                        pix_per_cell=8, cell_per_block=2, hog_channel=0,
                        spatial_feat=True, hist_feat=True, hog_feat=True):    
    #1) Define an empty list to receive features
    img_features = []
    #2) Apply color conversion if other than 'RGB'
    if color_space != 'RGB':
        if color_space == 'HSV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
        elif color_space == 'LUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
        elif color_space == 'HLS':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
        elif color_space == 'YUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YUV)
        elif color_space == 'YCrCb':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    else: feature_image = np.copy(img)      
    #3) Compute spatial features if flag is set
    if spatial_feat == True:
        spatial_features = bin_spatial(feature_image, size=spatial_size)
#         print("spatial_features",spatial_features.shape)
        #4) Append features to list
        img_features.append(spatial_features)
    #5) Compute histogram features if flag is set
    if hist_feat == True:
        hist_features = color_hist(feature_image, nbins=hist_bins)
#         print("hist_features",hist_features.shape)


        #6) Append features to list
        img_features.append(hist_features)
    #7) Compute HOG features if flag is set
    if hog_feat == True:
        if hog_channel == 'ALL':
            hog_features = []
            for channel in range(feature_image.shape[2]):
                hog_features.extend(get_hog_features(feature_image[:,:,channel], 
                                    orient, pix_per_cell, cell_per_block, 
                                    vis=False, feature_vec=True))      
        else:
            hog_features = get_hog_features(feature_image[:,:,hog_channel], orient, 
                        pix_per_cell, cell_per_block, vis=False, feature_vec=True)
        #8) Append features to list
        img_features.append(hog_features)
#         print("hog_features",hog_features.shape)
        
    #9) Return concatenated array of features
    return np.concatenate(img_features)
In [184]:
def search_windows (img, windows, svc, scaler, color_space='RGB', 
                    spatial_size=(32, 32), hist_bins=32, 
                    hist_range=(0, 256), orient=8, 
                    pix_per_cell=8, cell_per_block=2, 
                    hog_channel=0, spatial_feat=True, 
                    hist_feat=True, hog_feat=True):

    #1) Create an empty list to receive positive detection windows
    on_windows = []
    #2) Iterate over all windows in the list
    for window in windows:
        #3) Extract the test window from original image
        test_img = cv2.resize(img[window[0][1]:window[1][1], window[0][0]:window[1][0]], (64, 64)) 
        #4) Extract features for that window using single_img_features()
        features = single_img_features(test_img, color_space=color_space, 
                            spatial_size=spatial_size, hist_bins=hist_bins, 
                            orient=orient, pix_per_cell=pix_per_cell, 
                            cell_per_block=cell_per_block, 
                            hog_channel=hog_channel, spatial_feat=spatial_feat, 
                            hist_feat=hist_feat, hog_feat=hog_feat)
        #5) Scale extracted features to be fed to classifier
        test_features = scaler.transform(np.array(features).reshape(1, -1))
#         print('test_features',test_features.shape)
        #6) Predict using your classifier
        prediction = svc.predict(test_features)
        #7) If positive (prediction == 1) then save the window
        if prediction == 1:
            on_windows.append(window)
    #8) Return windows for positive detections
    return on_windows


image = mpimg.imread('test_images/test6.jpg')

color_space = 'RGB' # Can be RGB, HSV, LUV, HLS, YUV, YCrCb
orient = 9  # HOG orientations
pix_per_cell = 8 # HOG pixels per cell
cell_per_block = 2 # HOG cells per block
hog_channel = "ALL" # Can be 0, 1, 2, or "ALL"
spatial_size = (32, 32) # Spatial binning dimensions
hist_bins = 32   # Number of histogram bins
spatial_feat = True # Spatial features on or off
hist_feat = True # Histogram features on or off
hog_feat = True # HOG features on or off


color_spacecolor_sp  = 'YCrCb' # Can be RGB, HSV, LUV, HLS, YUV, YCrCb
orient = 9  # HOG orientations
pix_per_cell = 8 # HOG pixels per cell
cell_per_block = 2 # HOG cells per block
hog_channel = "ALL" # Can be 0, 1, 2, or "ALL"
spatial_size = (32, 32) # Spatial binning dimensions
hist_bins = 32   # Number of histogram bins
spatial_feat = True # Spatial features on or off
hist_feat = True # Histogram features on or off
hog_feat = True # HOG features on or off
y_start_stop=[400, 592]

windows = slide_window(image, x_start_stop=[None, None], y_start_stop=y_start_stop, 
                    xy_window=(96, 96), xy_overlap=(0.5, 0.5))

hot_windows = search_windows(image, windows, svc, X_scaler, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat)

window_img = draw_boxes(image, hot_windows, color=(255, 0, 0), thick=6)                    
plt.imshow(window_img)
plt.show()
In [185]:
t=time.time() # Start time
for image_p in glob.glob('test_images/test*.jpg'):
    image = mpimg.imread(image_p)


    draw_image = np.copy(image)
    windows = slide_window(image, x_start_stop=[100, None], y_start_stop=[400, 640], 
                    xy_window=(128, 128), xy_overlap=(0.5, 0.5))
#     window_img = draw_boxes(draw_image, windows, color=(0, 0, 255), thick=6)                    



    hot_windows = []
    hot_windows += (search_windows(image, windows, svc, X_scaler, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat))                       
    window_img = draw_boxes(draw_image, hot_windows, color=(255, 0, 0), thick=6)   
    plt.imshow(window_img)
    plt.show()
#     show_img(window_img)
# print(round(time.time()-t, 2), 'Seconds to process test images')
In [186]:
def convert_color(img, conv='RGB2YCrCb'):
    if conv == 'RGB2YCrCb':
        return cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    if conv == 'BGR2YCrCb':
        return cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
    if conv == 'RGB2LUV':
        return cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
    if conv == 'RGB2YUV':
        return cv2.cvtColor(img, cv2.COLOR_RGB2YUV)
In [187]:
# Define a single function that can extract features using hog sub-sampling and make predictions
def find_cars(img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins):
    
    draw_img = np.copy(img)
    img = img.astype(np.float32)/255
    bboxes = []
    img_tosearch = img[ystart:ystop,:,:]
    ctrans_tosearch = convert_color(img_tosearch, conv='RGB2YCrCb')
    if scale != 1:
        imshape = ctrans_tosearch.shape
        ctrans_tosearch = cv2.resize(ctrans_tosearch, (np.int(imshape[1]/scale), np.int(imshape[0]/scale)))
        
    ch1 = ctrans_tosearch[:,:,0]
    ch2 = ctrans_tosearch[:,:,1]
    ch3 = ctrans_tosearch[:,:,2]

    # Define blocks and steps as above
    nxblocks = (ch1.shape[1] // pix_per_cell) - cell_per_block + 1
    nyblocks = (ch1.shape[0] // pix_per_cell) - cell_per_block + 1 
    nfeat_per_block = orient*cell_per_block**2
    
    # 64 was the orginal sampling rate, with 8 cells and 8 pix per cell
    window = 64
    nblocks_per_window = (window // pix_per_cell) - cell_per_block + 1
    cells_per_step = 2  # Instead of overlap, define how many cells to step
    nxsteps = (nxblocks - nblocks_per_window) // cells_per_step + 1
    nysteps = (nyblocks - nblocks_per_window) // cells_per_step + 1
    
    # Compute individual channel HOG features for the entire image
    hog1 = get_hog_features(ch1, orient, pix_per_cell, cell_per_block, feature_vec=False)
    hog2 = get_hog_features(ch2, orient, pix_per_cell, cell_per_block, feature_vec=False)
    hog3 = get_hog_features(ch3, orient, pix_per_cell, cell_per_block, feature_vec=False)
    
    for xb in range(nxsteps):
        for yb in range(nysteps):
            ypos = yb*cells_per_step
            xpos = xb*cells_per_step
            # Extract HOG for this patch
            hog_feat1 = hog1[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_feat2 = hog2[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_feat3 = hog3[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_features = np.hstack((hog_feat1, hog_feat2, hog_feat3))

            xleft = xpos*pix_per_cell
            ytop = ypos*pix_per_cell

            # Extract the image patch
            subimg = cv2.resize(ctrans_tosearch[ytop:ytop+window, xleft:xleft+window], (64,64))
          
            # Get color features
            spatial_features = bin_spatial(subimg, size=spatial_size)
            hist_features = color_hist(subimg, nbins=hist_bins)

            # Scale features and make a prediction
            test_features = X_scaler.transform(np.hstack((spatial_features, hist_features, hog_features)).reshape(1, -1))    
            #test_features = X_scaler.transform(np.hstack((shape_feat, hist_feat)).reshape(1, -1))    
            test_prediction = svc.predict(test_features)
            
            if test_prediction == 1:
                xbox_left = np.int(xleft*scale)
                ytop_draw = np.int(ytop*scale)
                win_draw = np.int(window*scale)
                box = ((xbox_left, ytop_draw+ystart),(xbox_left+win_draw,ytop_draw+win_draw+ystart))
                bboxes.append(box)
                cv2.rectangle(draw_img,box[0],box[1],(0,0,255),6) 
                
    return draw_img, bboxes

image = mpimg.imread('test_images/test6.jpg')

for image_p in glob.glob('test_images/test*.jpg'):
    image = mpimg.imread(image_p)
    ystart = 350
    ystop = 720
    scale = 1.0
    draw_img, bboxes = find_cars(image, ystart, ystop, scale, svc, 
                                 X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    fig = plt.figure()
    plt.imshow(draw_img)
In [188]:
def add_heat(heatmap, bbox_list):
    # Iterate through list of bboxes
    for box in bbox_list:
        # Add += 1 for all pixels inside each bbox
        # Assuming each "box" takes the form ((x1, y1), (x2, y2))
        heatmap[box[0][1]:box[1][1], box[0][0]:box[1][0]] += 1
    # Return updated heatmap
    return heatmap# Iterate through list of bboxes
    
def apply_threshold(heatmap, threshold):
    # Zero out pixels below the threshold
    heatmap[heatmap <= threshold] = 0
    # Return thresholded map
    return heatmap

def draw_labeled_bboxes(img, labels):
    # Iterate through all detected cars
    for car_number in range(1, labels[1]+1):
        # Find pixels with each car_number label value
        nonzero = (labels[0] == car_number).nonzero()
        # Identify x and y values of those pixels
        nonzeroy = np.array(nonzero[0])
        nonzerox = np.array(nonzero[1])
        # Define a bounding box based on min/max x and y
        bbox = ((np.min(nonzerox), np.min(nonzeroy)), (np.max(nonzerox), np.max(nonzeroy)))
        # Draw the box on the image
        cv2.rectangle(img, bbox[0], bbox[1], (0,0,255), 6)
    # Return the image
    return img

image = mpimg.imread('test_images/test6.jpg')

for image_p in glob.glob('test_images/test*.jpg'):
    image = mpimg.imread(image_p)
    heat = np.zeros_like(image[:,:,0]).astype(np.float)

    ystart = 350
    ystop = 720
    scale = 1.2
    draw_img, bboxes = find_cars(image, ystart, ystop, scale, svc, 
                                 X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    # Add heat to each box in box list
    heat = add_heat(heat,bboxes)

    # Apply threshold to help remove false positives
    heat = apply_threshold(heat,1)

    # Visualize the heatmap when displaying    
    heatmap = np.clip(heat, 0, 255)

    # Find final boxes from heatmap using label function
    labels = label(heatmap)
    draw_img = draw_labeled_bboxes(np.copy(image), labels)

    fig = plt.figure()
    plt.subplot(121)
    plt.imshow(draw_img)
    plt.title('Car Positions')
    plt.subplot(122)
    plt.imshow(heatmap, cmap='hot')
    plt.title('Heat Map')
    fig.tight_layout()
    
In [189]:
heatmaps = collections.deque(maxlen=7) 

def _pipeline(img):
    test_img=np.copy(img)
    rects = []
    
    ystart = 350
    ystop = 464
    scale = 1.0
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list)
    ystart = 400
    ystop = 480
    scale = 1.0
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list)    

    ystart =400
    ystop = 592
    scale = 1.5
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    rects.append(window_list) 
    
    ystart = 400
    ystop = 528
    scale = 1.5
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list) 
    ystart = 400
    ystop = 592
    scale = 1.8
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list) 
    ystart = 400
    ystop = 528
    scale = 2.0
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list)  
    
    ystop = 560
    scale = 1.8
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list)
    ystop = 560
    scale = 2.0
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list)    
    ystop = 596
    scale = 3.5
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)

    rects.append(window_list)    
    ystart = 464
    ystop = 660
    scale = 3.5
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)


    rects.append(window_list)    

    rectangles = [a for rect in rects for a in rect] 
    
    return rectangles


def annotate_brake(img):

    text = 'BRAKE'
    cv2.putText(img, text, (40,120), cv2.FONT_HERSHEY_DUPLEX, 1.5, (200,255,155), 2, cv2.LINE_AA)
    return img


def rear_end_pipeline(img):
    test_img=np.copy(img)
    rects = []
    # Rear End Detection
    ystart = 100
    ystop = 660
    scale = 6.5
    draw_img,window_list = find_cars(test_img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    rects.append(window_list)
    rectangles = [a for rect in rects for a in rect] 
    heatmap = _heatmap(img, rectangles)
    draw_img = _labels(img, heatmap)
    if len(rectangles) > 0:
        annotate_brake(img)
    return draw_img
    
def _heatmap(img, rectangles):
    heat = np.zeros_like(image[:,:,0]).astype(np.float)

    heat = add_heat(heat,rectangles)

    # Apply threshold to help remove false positives
    heat = apply_threshold(heat,1)

    # Visualize the heatmap when displaying    
    heatmap = np.clip(heat, 0, 255)

    return heatmap

def _labels(img, heatmap):
    # Find final boxes from heatmap using label function
    labels = label(heatmap)
    draw_img = draw_labeled_bboxes(np.copy(img), labels)
    return draw_img

def pipeline(img):

    rectangles = _pipeline(img)
    
    heatmap = _heatmap(img, rectangles)

    draw_img = _labels(img, heatmap)
    
    return draw_img
    
# def pipeline_heatmap(img):
#     heat = np.zeros_like(image[:,:,0]).astype(np.float)

#     rectangles = _pipeline(img)
    
#     heat = add_heat(heat,rectangles)
#         # Apply threshold to help remove false positives
#     heat = apply_threshold(heat,1)

#     # Visualize the heatmap when displaying    
#     heatmap = np.clip(heat, 0, 255)
#     return heatmap

def pipeline_heatmap(img):
    rectangles = _pipeline(img)
    draw_img = _heatmap(img, rectangles)
    return draw_img
In [198]:
fig, axs = plt.subplots(6,2, figsize=(10, 20))
axs = axs.ravel()
i = 0
for image_p in glob.glob('test_images/test*.jpg'):
    img = mpimg.imread(image_p)

    img_out = pipeline(img)
    axs[i].imshow(img_out)
    axs[i].axis('off')
    
    i += 1

    img_hm = pipeline_heatmap(img)
    axs[i].imshow(img_hm)
    axs[i].axis('off')

    i += 1
In [105]:
from moviepy.editor import VideoFileClip

video_output1 = 'project_video_output.mp4'
video_input1 = VideoFileClip('project_video.mp4')
processed_video = video_input1.fl_image(pipeline)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video project_video_output.mp4
[MoviePy] Writing video project_video_output.mp4
100%|█████████▉| 1260/1261 [52:29<00:02,  2.50s/it]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output.mp4 

CPU times: user 51min 10s, sys: 1min 41s, total: 52min 52s
Wall time: 52min 30s
In [113]:
from moviepy.editor import VideoFileClip

video_output1 = 'project_video_output_heatmap.mp4'
video_input1 = VideoFileClip('project_video.mp4')
processed_video = video_input1.fl_image(pipeline_heatmap)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video project_video_output_heatmap.mp4
[MoviePy] Writing video project_video_output_heatmap.mp4
  0%|          | 0/1261 [00:00<?, ?it/s]
  0%|          | 1/1261 [00:02<49:32,  2.36s/it]
  0%|          | 2/1261 [00:04<49:07,  2.34s/it]
  0%|          | 3/1261 [00:07<50:01,  2.39s/it]
  0%|          | 4/1261 [00:09<50:02,  2.39s/it]
  0%|          | 5/1261 [00:12<50:23,  2.41s/it]
  0%|          | 6/1261 [00:14<49:59,  2.39s/it]
  1%|          | 7/1261 [00:16<49:52,  2.39s/it]
  1%|          | 8/1261 [00:18<49:35,  2.37s/it]
  1%|          | 9/1261 [00:21<49:38,  2.38s/it]
  1%|          | 10/1261 [00:23<49:33,  2.38s/it]
  1%|          | 11/1261 [00:26<49:40,  2.38s/it]
  1%|          | 12/1261 [00:28<49:55,  2.40s/it]
  1%|          | 13/1261 [00:31<49:56,  2.40s/it]
  1%|          | 14/1261 [00:33<49:52,  2.40s/it]
  1%|          | 15/1261 [00:36<49:53,  2.40s/it]
  1%|▏         | 16/1261 [00:38<49:41,  2.39s/it]
  1%|▏         | 17/1261 [00:40<49:34,  2.39s/it]
  1%|▏         | 18/1261 [00:43<49:31,  2.39s/it]
  2%|▏         | 19/1261 [00:45<49:30,  2.39s/it]
  2%|▏         | 20/1261 [00:47<49:33,  2.40s/it]
  2%|▏         | 21/1261 [00:50<49:37,  2.40s/it]
  2%|▏         | 22/1261 [00:52<49:35,  2.40s/it]
  2%|▏         | 23/1261 [00:55<49:36,  2.40s/it]
  2%|▏         | 24/1261 [00:57<49:29,  2.40s/it]
  2%|▏         | 25/1261 [00:59<49:24,  2.40s/it]
  2%|▏         | 26/1261 [01:02<49:38,  2.41s/it]
  2%|▏         | 27/1261 [01:05<49:56,  2.43s/it]
  2%|▏         | 28/1261 [01:08<50:21,  2.45s/it]
  2%|▏         | 29/1261 [01:11<50:22,  2.45s/it]
  2%|▏         | 30/1261 [01:13<50:24,  2.46s/it]
  2%|▏         | 31/1261 [01:16<50:22,  2.46s/it]
  3%|▎         | 32/1261 [01:18<50:18,  2.46s/it]
  3%|▎         | 33/1261 [01:21<50:23,  2.46s/it]
  3%|▎         | 34/1261 [01:23<50:20,  2.46s/it]
  3%|▎         | 35/1261 [01:26<50:16,  2.46s/it]
  3%|▎         | 36/1261 [01:28<50:13,  2.46s/it]
  3%|▎         | 37/1261 [01:31<50:11,  2.46s/it]
  3%|▎         | 38/1261 [01:33<50:07,  2.46s/it]
  3%|▎         | 39/1261 [01:35<50:02,  2.46s/it]
  3%|▎         | 40/1261 [01:38<49:58,  2.46s/it]
  3%|▎         | 41/1261 [01:40<49:55,  2.46s/it]
  3%|▎         | 42/1261 [01:43<49:51,  2.45s/it]
  3%|▎         | 43/1261 [01:45<49:46,  2.45s/it]
  3%|▎         | 44/1261 [01:47<49:42,  2.45s/it]
  4%|▎         | 45/1261 [01:50<49:40,  2.45s/it]
  4%|▎         | 46/1261 [01:52<49:36,  2.45s/it]
  4%|▎         | 47/1261 [01:55<49:32,  2.45s/it]
  4%|▍         | 48/1261 [01:57<49:28,  2.45s/it]
  4%|▍         | 49/1261 [01:59<49:25,  2.45s/it]
  4%|▍         | 50/1261 [02:02<49:21,  2.45s/it]
  4%|▍         | 51/1261 [02:04<49:17,  2.44s/it]
  4%|▍         | 52/1261 [02:07<49:14,  2.44s/it]
  4%|▍         | 53/1261 [02:09<49:10,  2.44s/it]
  4%|▍         | 54/1261 [02:11<49:06,  2.44s/it]
  4%|▍         | 55/1261 [02:14<49:01,  2.44s/it]
  4%|▍         | 56/1261 [02:16<48:57,  2.44s/it]
  5%|▍         | 57/1261 [02:19<48:56,  2.44s/it]
  5%|▍         | 58/1261 [02:21<48:52,  2.44s/it]
  5%|▍         | 59/1261 [02:23<48:48,  2.44s/it]
  5%|▍         | 60/1261 [02:26<48:45,  2.44s/it]
  5%|▍         | 61/1261 [02:28<48:45,  2.44s/it]
  5%|▍         | 62/1261 [02:31<48:42,  2.44s/it]
  5%|▍         | 63/1261 [02:33<48:38,  2.44s/it]
  5%|▌         | 64/1261 [02:35<48:35,  2.44s/it]
  5%|▌         | 65/1261 [02:38<48:31,  2.43s/it]
  5%|▌         | 66/1261 [02:40<48:28,  2.43s/it]
  5%|▌         | 67/1261 [02:42<48:24,  2.43s/it]
  5%|▌         | 68/1261 [02:45<48:21,  2.43s/it]
  5%|▌         | 69/1261 [02:47<48:18,  2.43s/it]
  6%|▌         | 70/1261 [02:50<48:24,  2.44s/it]
  6%|▌         | 71/1261 [02:53<48:26,  2.44s/it]
  6%|▌         | 72/1261 [02:56<48:27,  2.45s/it]
  6%|▌         | 73/1261 [02:58<48:30,  2.45s/it]
  6%|▌         | 74/1261 [03:01<48:32,  2.45s/it]
  6%|▌         | 75/1261 [03:04<48:34,  2.46s/it]
  6%|▌         | 76/1261 [03:07<48:36,  2.46s/it]
  6%|▌         | 77/1261 [03:09<48:33,  2.46s/it]
  6%|▌         | 78/1261 [03:11<48:29,  2.46s/it]
  6%|▋         | 79/1261 [03:14<48:27,  2.46s/it]
  6%|▋         | 80/1261 [03:16<48:24,  2.46s/it]
  6%|▋         | 81/1261 [03:19<48:21,  2.46s/it]
  7%|▋         | 82/1261 [03:21<48:18,  2.46s/it]
  7%|▋         | 83/1261 [03:23<48:14,  2.46s/it]
  7%|▋         | 84/1261 [03:26<48:11,  2.46s/it]
  7%|▋         | 85/1261 [03:28<48:07,  2.46s/it]
  7%|▋         | 86/1261 [03:31<48:08,  2.46s/it]
  7%|▋         | 87/1261 [03:33<48:06,  2.46s/it]
  7%|▋         | 88/1261 [03:36<48:03,  2.46s/it]
  7%|▋         | 89/1261 [03:38<48:00,  2.46s/it]
  7%|▋         | 90/1261 [03:41<47:57,  2.46s/it]
  7%|▋         | 91/1261 [03:43<47:55,  2.46s/it]
  7%|▋         | 92/1261 [03:45<47:51,  2.46s/it]
  7%|▋         | 93/1261 [03:48<47:48,  2.46s/it]
  7%|▋         | 94/1261 [03:50<47:45,  2.46s/it]
  8%|▊         | 95/1261 [03:53<47:42,  2.45s/it]
  8%|▊         | 96/1261 [03:55<47:39,  2.45s/it]
  8%|▊         | 97/1261 [03:58<47:38,  2.46s/it]
  8%|▊         | 98/1261 [04:00<47:36,  2.46s/it]
  8%|▊         | 99/1261 [04:03<47:35,  2.46s/it]
  8%|▊         | 100/1261 [04:05<47:33,  2.46s/it]
  8%|▊         | 101/1261 [04:08<47:30,  2.46s/it]
  8%|▊         | 102/1261 [04:10<47:27,  2.46s/it]
  8%|▊         | 103/1261 [04:13<47:25,  2.46s/it]
  8%|▊         | 104/1261 [04:15<47:23,  2.46s/it]
  8%|▊         | 105/1261 [04:18<47:25,  2.46s/it]
  8%|▊         | 106/1261 [04:21<47:27,  2.47s/it]
  8%|▊         | 107/1261 [04:23<47:25,  2.47s/it]
  9%|▊         | 108/1261 [04:26<47:23,  2.47s/it]
  9%|▊         | 109/1261 [04:28<47:22,  2.47s/it]
  9%|▊         | 110/1261 [04:31<47:21,  2.47s/it]
  9%|▉         | 111/1261 [04:34<47:20,  2.47s/it]
  9%|▉         | 112/1261 [04:36<47:18,  2.47s/it]
  9%|▉         | 113/1261 [04:39<47:16,  2.47s/it]
  9%|▉         | 114/1261 [04:41<47:12,  2.47s/it]
  9%|▉         | 115/1261 [04:43<47:09,  2.47s/it]
  9%|▉         | 116/1261 [04:46<47:06,  2.47s/it]
  9%|▉         | 117/1261 [04:48<47:03,  2.47s/it]
  9%|▉         | 118/1261 [04:51<47:00,  2.47s/it]
  9%|▉         | 119/1261 [04:53<46:57,  2.47s/it]
 10%|▉         | 120/1261 [04:55<46:53,  2.47s/it]
 10%|▉         | 121/1261 [04:58<46:50,  2.47s/it]
 10%|▉         | 122/1261 [05:00<46:47,  2.46s/it]
 10%|▉         | 123/1261 [05:03<46:43,  2.46s/it]
 10%|▉         | 124/1261 [05:05<46:40,  2.46s/it]
 10%|▉         | 125/1261 [05:07<46:37,  2.46s/it]
 10%|▉         | 126/1261 [05:10<46:34,  2.46s/it]
 10%|█         | 127/1261 [05:12<46:31,  2.46s/it]
 10%|█         | 128/1261 [05:15<46:28,  2.46s/it]
 10%|█         | 129/1261 [05:17<46:25,  2.46s/it]
 10%|█         | 130/1261 [05:19<46:22,  2.46s/it]
 10%|█         | 131/1261 [05:22<46:19,  2.46s/it]
 10%|█         | 132/1261 [05:24<46:16,  2.46s/it]
 11%|█         | 133/1261 [05:26<46:13,  2.46s/it]
 11%|█         | 134/1261 [05:29<46:10,  2.46s/it]
 11%|█         | 135/1261 [05:31<46:07,  2.46s/it]
 11%|█         | 136/1261 [05:34<46:04,  2.46s/it]
 11%|█         | 137/1261 [05:36<46:01,  2.46s/it]
 11%|█         | 138/1261 [05:39<45:58,  2.46s/it]
 11%|█         | 139/1261 [05:41<45:56,  2.46s/it]
 11%|█         | 140/1261 [05:43<45:53,  2.46s/it]
 11%|█         | 141/1261 [05:46<45:50,  2.46s/it]
 11%|█▏        | 142/1261 [05:48<45:48,  2.46s/it]
 11%|█▏        | 143/1261 [05:51<45:45,  2.46s/it]
 11%|█▏        | 144/1261 [05:53<45:42,  2.46s/it]
 11%|█▏        | 145/1261 [05:56<45:40,  2.46s/it]
 12%|█▏        | 146/1261 [05:58<45:37,  2.46s/it]
 12%|█▏        | 147/1261 [06:00<45:35,  2.46s/it]
 12%|█▏        | 148/1261 [06:03<45:33,  2.46s/it]
 12%|█▏        | 149/1261 [06:05<45:30,  2.46s/it]
 12%|█▏        | 150/1261 [06:08<45:27,  2.46s/it]
 12%|█▏        | 151/1261 [06:10<45:25,  2.46s/it]
 12%|█▏        | 152/1261 [06:13<45:22,  2.45s/it]
 12%|█▏        | 153/1261 [06:15<45:19,  2.45s/it]
 12%|█▏        | 154/1261 [06:17<45:16,  2.45s/it]
 12%|█▏        | 155/1261 [06:20<45:14,  2.45s/it]
 12%|█▏        | 156/1261 [06:22<45:11,  2.45s/it]
 12%|█▏        | 157/1261 [06:25<45:09,  2.45s/it]
 13%|█▎        | 158/1261 [06:27<45:07,  2.45s/it]
 13%|█▎        | 159/1261 [06:30<45:04,  2.45s/it]
 13%|█▎        | 160/1261 [06:32<45:01,  2.45s/it]
 13%|█▎        | 161/1261 [06:35<44:58,  2.45s/it]
 13%|█▎        | 162/1261 [06:37<44:56,  2.45s/it]
 13%|█▎        | 163/1261 [06:39<44:53,  2.45s/it]
 13%|█▎        | 164/1261 [06:42<44:50,  2.45s/it]
 13%|█▎        | 165/1261 [06:44<44:47,  2.45s/it]
 13%|█▎        | 166/1261 [06:46<44:44,  2.45s/it]
 13%|█▎        | 167/1261 [06:49<44:41,  2.45s/it]
 13%|█▎        | 168/1261 [06:51<44:38,  2.45s/it]
 13%|█▎        | 169/1261 [06:54<44:36,  2.45s/it]
 13%|█▎        | 170/1261 [06:56<44:33,  2.45s/it]
 14%|█▎        | 171/1261 [06:59<44:30,  2.45s/it]
 14%|█▎        | 172/1261 [07:01<44:28,  2.45s/it]
 14%|█▎        | 173/1261 [07:03<44:25,  2.45s/it]
 14%|█▍        | 174/1261 [07:06<44:22,  2.45s/it]
 14%|█▍        | 175/1261 [07:08<44:19,  2.45s/it]
 14%|█▍        | 176/1261 [07:10<44:16,  2.45s/it]
 14%|█▍        | 177/1261 [07:13<44:13,  2.45s/it]
 14%|█▍        | 178/1261 [07:15<44:10,  2.45s/it]
 14%|█▍        | 179/1261 [07:18<44:08,  2.45s/it]
 14%|█▍        | 180/1261 [07:20<44:05,  2.45s/it]
 14%|█▍        | 181/1261 [07:22<44:02,  2.45s/it]
 14%|█▍        | 182/1261 [07:25<44:00,  2.45s/it]
 15%|█▍        | 183/1261 [07:27<43:57,  2.45s/it]
 15%|█▍        | 184/1261 [07:30<43:55,  2.45s/it]
 15%|█▍        | 185/1261 [07:32<43:52,  2.45s/it]
 15%|█▍        | 186/1261 [07:35<43:49,  2.45s/it]
 15%|█▍        | 187/1261 [07:37<43:47,  2.45s/it]
 15%|█▍        | 188/1261 [07:39<43:44,  2.45s/it]
 15%|█▍        | 189/1261 [07:42<43:41,  2.45s/it]
 15%|█▌        | 190/1261 [07:44<43:39,  2.45s/it]
 15%|█▌        | 191/1261 [07:47<43:36,  2.45s/it]
 15%|█▌        | 192/1261 [07:49<43:33,  2.44s/it]
 15%|█▌        | 193/1261 [07:51<43:30,  2.44s/it]
 15%|█▌        | 194/1261 [07:54<43:27,  2.44s/it]
 15%|█▌        | 195/1261 [07:56<43:25,  2.44s/it]
 16%|█▌        | 196/1261 [07:58<43:22,  2.44s/it]
 16%|█▌        | 197/1261 [08:01<43:21,  2.45s/it]
 16%|█▌        | 198/1261 [08:04<43:19,  2.45s/it]
 16%|█▌        | 199/1261 [08:06<43:17,  2.45s/it]
 16%|█▌        | 200/1261 [08:09<43:15,  2.45s/it]
 16%|█▌        | 201/1261 [08:11<43:13,  2.45s/it]
 16%|█▌        | 202/1261 [08:14<43:10,  2.45s/it]
 16%|█▌        | 203/1261 [08:16<43:07,  2.45s/it]
 16%|█▌        | 204/1261 [08:18<43:05,  2.45s/it]
 16%|█▋        | 205/1261 [08:21<43:02,  2.45s/it]
 16%|█▋        | 206/1261 [08:23<42:59,  2.45s/it]
 16%|█▋        | 207/1261 [08:26<42:57,  2.45s/it]
 16%|█▋        | 208/1261 [08:28<42:54,  2.45s/it]
 17%|█▋        | 209/1261 [08:31<42:52,  2.45s/it]
 17%|█▋        | 210/1261 [08:33<42:49,  2.44s/it]
 17%|█▋        | 211/1261 [08:35<42:46,  2.44s/it]
 17%|█▋        | 212/1261 [08:38<42:44,  2.44s/it]
 17%|█▋        | 213/1261 [08:40<42:41,  2.44s/it]
 17%|█▋        | 214/1261 [08:43<42:39,  2.44s/it]
 17%|█▋        | 215/1261 [08:45<42:36,  2.44s/it]
 17%|█▋        | 216/1261 [08:47<42:33,  2.44s/it]
 17%|█▋        | 217/1261 [08:50<42:31,  2.44s/it]
 17%|█▋        | 218/1261 [08:52<42:28,  2.44s/it]
 17%|█▋        | 219/1261 [08:55<42:25,  2.44s/it]
 17%|█▋        | 220/1261 [08:57<42:22,  2.44s/it]
 18%|█▊        | 221/1261 [08:59<42:20,  2.44s/it]
 18%|█▊        | 222/1261 [09:02<42:17,  2.44s/it]
 18%|█▊        | 223/1261 [09:04<42:14,  2.44s/it]
 18%|█▊        | 224/1261 [09:07<42:12,  2.44s/it]
 18%|█▊        | 225/1261 [09:09<42:09,  2.44s/it]
 18%|█▊        | 226/1261 [09:11<42:07,  2.44s/it]
 18%|█▊        | 227/1261 [09:14<42:04,  2.44s/it]
 18%|█▊        | 228/1261 [09:16<42:01,  2.44s/it]
 18%|█▊        | 229/1261 [09:19<41:59,  2.44s/it]
 18%|█▊        | 230/1261 [09:21<41:56,  2.44s/it]
 18%|█▊        | 231/1261 [09:23<41:54,  2.44s/it]
 18%|█▊        | 232/1261 [09:26<41:51,  2.44s/it]
 18%|█▊        | 233/1261 [09:28<41:48,  2.44s/it]
 19%|█▊        | 234/1261 [09:31<41:46,  2.44s/it]
 19%|█▊        | 235/1261 [09:33<41:43,  2.44s/it]
 19%|█▊        | 236/1261 [09:35<41:40,  2.44s/it]
 19%|█▉        | 237/1261 [09:38<41:38,  2.44s/it]
 19%|█▉        | 238/1261 [09:40<41:35,  2.44s/it]
 19%|█▉        | 239/1261 [09:42<41:32,  2.44s/it]
 19%|█▉        | 240/1261 [09:45<41:30,  2.44s/it]
 19%|█▉        | 241/1261 [09:48<41:28,  2.44s/it]
 19%|█▉        | 242/1261 [09:50<41:27,  2.44s/it]
 19%|█▉        | 243/1261 [09:53<41:24,  2.44s/it]
 19%|█▉        | 244/1261 [09:55<41:21,  2.44s/it]
 19%|█▉        | 245/1261 [09:57<41:19,  2.44s/it]
 20%|█▉        | 246/1261 [10:00<41:16,  2.44s/it]
 20%|█▉        | 247/1261 [10:02<41:14,  2.44s/it]
 20%|█▉        | 248/1261 [10:05<41:11,  2.44s/it]
 20%|█▉        | 249/1261 [10:07<41:09,  2.44s/it]
 20%|█▉        | 250/1261 [10:09<41:06,  2.44s/it]
 20%|█▉        | 251/1261 [10:12<41:03,  2.44s/it]
 20%|█▉        | 252/1261 [10:14<41:01,  2.44s/it]
 20%|██        | 253/1261 [10:17<40:58,  2.44s/it]
 20%|██        | 254/1261 [10:19<40:56,  2.44s/it]
 20%|██        | 255/1261 [10:21<40:53,  2.44s/it]
 20%|██        | 256/1261 [10:24<40:51,  2.44s/it]
 20%|██        | 257/1261 [10:26<40:48,  2.44s/it]
 20%|██        | 258/1261 [10:29<40:45,  2.44s/it]
 21%|██        | 259/1261 [10:31<40:43,  2.44s/it]
 21%|██        | 260/1261 [10:33<40:40,  2.44s/it]
 21%|██        | 261/1261 [10:36<40:38,  2.44s/it]
 21%|██        | 262/1261 [10:38<40:35,  2.44s/it]
 21%|██        | 263/1261 [10:41<40:33,  2.44s/it]
 21%|██        | 264/1261 [10:43<40:30,  2.44s/it]
 21%|██        | 265/1261 [10:46<40:28,  2.44s/it]
 21%|██        | 266/1261 [10:48<40:25,  2.44s/it]
 21%|██        | 267/1261 [10:50<40:22,  2.44s/it]
 21%|██▏       | 268/1261 [10:53<40:20,  2.44s/it]
 21%|██▏       | 269/1261 [10:55<40:17,  2.44s/it]
 21%|██▏       | 270/1261 [10:58<40:15,  2.44s/it]
 21%|██▏       | 271/1261 [11:00<40:12,  2.44s/it]
 22%|██▏       | 272/1261 [11:02<40:09,  2.44s/it]
 22%|██▏       | 273/1261 [11:05<40:07,  2.44s/it]
 22%|██▏       | 274/1261 [11:07<40:04,  2.44s/it]
 22%|██▏       | 275/1261 [11:09<40:02,  2.44s/it]
 22%|██▏       | 276/1261 [11:12<39:59,  2.44s/it]
 22%|██▏       | 277/1261 [11:14<39:57,  2.44s/it]
 22%|██▏       | 278/1261 [11:17<39:54,  2.44s/it]
 22%|██▏       | 279/1261 [11:19<39:51,  2.44s/it]
 22%|██▏       | 280/1261 [11:21<39:49,  2.44s/it]
 22%|██▏       | 281/1261 [11:24<39:46,  2.44s/it]
 22%|██▏       | 282/1261 [11:26<39:44,  2.44s/it]
 22%|██▏       | 283/1261 [11:29<39:41,  2.44s/it]
 23%|██▎       | 284/1261 [11:31<39:39,  2.44s/it]
 23%|██▎       | 285/1261 [11:33<39:36,  2.43s/it]
 23%|██▎       | 286/1261 [11:36<39:33,  2.43s/it]
 23%|██▎       | 287/1261 [11:38<39:31,  2.43s/it]
 23%|██▎       | 288/1261 [11:41<39:28,  2.43s/it]
 23%|██▎       | 289/1261 [11:43<39:26,  2.43s/it]
 23%|██▎       | 290/1261 [11:45<39:23,  2.43s/it]
 23%|██▎       | 291/1261 [11:48<39:21,  2.43s/it]
 23%|██▎       | 292/1261 [11:50<39:18,  2.43s/it]
 23%|██▎       | 293/1261 [11:53<39:16,  2.43s/it]
 23%|██▎       | 294/1261 [11:55<39:13,  2.43s/it]
 23%|██▎       | 295/1261 [11:57<39:11,  2.43s/it]
 23%|██▎       | 296/1261 [12:00<39:08,  2.43s/it]
 24%|██▎       | 297/1261 [12:02<39:05,  2.43s/it]
 24%|██▎       | 298/1261 [12:05<39:03,  2.43s/it]
 24%|██▎       | 299/1261 [12:07<39:00,  2.43s/it]
 24%|██▍       | 300/1261 [12:09<38:58,  2.43s/it]
 24%|██▍       | 301/1261 [12:12<38:55,  2.43s/it]
 24%|██▍       | 302/1261 [12:14<38:53,  2.43s/it]
 24%|██▍       | 303/1261 [12:17<38:50,  2.43s/it]
 24%|██▍       | 304/1261 [12:19<38:48,  2.43s/it]
 24%|██▍       | 305/1261 [12:22<38:45,  2.43s/it]
 24%|██▍       | 306/1261 [12:24<38:43,  2.43s/it]
 24%|██▍       | 307/1261 [12:26<38:40,  2.43s/it]
 24%|██▍       | 308/1261 [12:29<38:38,  2.43s/it]
 25%|██▍       | 309/1261 [12:31<38:35,  2.43s/it]
 25%|██▍       | 310/1261 [12:34<38:33,  2.43s/it]
 25%|██▍       | 311/1261 [12:36<38:30,  2.43s/it]
 25%|██▍       | 312/1261 [12:38<38:28,  2.43s/it]
 25%|██▍       | 313/1261 [12:41<38:25,  2.43s/it]
 25%|██▍       | 314/1261 [12:43<38:23,  2.43s/it]
 25%|██▍       | 315/1261 [12:46<38:20,  2.43s/it]
 25%|██▌       | 316/1261 [12:48<38:17,  2.43s/it]
 25%|██▌       | 317/1261 [12:50<38:15,  2.43s/it]
 25%|██▌       | 318/1261 [12:53<38:12,  2.43s/it]
 25%|██▌       | 319/1261 [12:55<38:10,  2.43s/it]
 25%|██▌       | 320/1261 [12:58<38:08,  2.43s/it]
 25%|██▌       | 321/1261 [13:00<38:05,  2.43s/it]
 26%|██▌       | 322/1261 [13:02<38:03,  2.43s/it]
 26%|██▌       | 323/1261 [13:05<38:00,  2.43s/it]
 26%|██▌       | 324/1261 [13:07<37:57,  2.43s/it]
 26%|██▌       | 325/1261 [13:10<37:55,  2.43s/it]
 26%|██▌       | 326/1261 [13:12<37:52,  2.43s/it]
 26%|██▌       | 327/1261 [13:14<37:50,  2.43s/it]
 26%|██▌       | 328/1261 [13:17<37:47,  2.43s/it]
 26%|██▌       | 329/1261 [13:19<37:45,  2.43s/it]
 26%|██▌       | 330/1261 [13:22<37:42,  2.43s/it]
 26%|██▌       | 331/1261 [13:24<37:40,  2.43s/it]
 26%|██▋       | 332/1261 [13:26<37:37,  2.43s/it]
 26%|██▋       | 333/1261 [13:29<37:35,  2.43s/it]
 26%|██▋       | 334/1261 [13:31<37:32,  2.43s/it]
 27%|██▋       | 335/1261 [13:34<37:30,  2.43s/it]
 27%|██▋       | 336/1261 [13:36<37:27,  2.43s/it]
 27%|██▋       | 337/1261 [13:38<37:25,  2.43s/it]
 27%|██▋       | 338/1261 [13:41<37:22,  2.43s/it]
 27%|██▋       | 339/1261 [13:43<37:20,  2.43s/it]
 27%|██▋       | 340/1261 [13:46<37:17,  2.43s/it]
 27%|██▋       | 341/1261 [13:48<37:16,  2.43s/it]
 27%|██▋       | 342/1261 [13:51<37:13,  2.43s/it]
 27%|██▋       | 343/1261 [13:53<37:11,  2.43s/it]
 27%|██▋       | 344/1261 [13:56<37:08,  2.43s/it]
 27%|██▋       | 345/1261 [13:58<37:06,  2.43s/it]
 27%|██▋       | 346/1261 [14:00<37:03,  2.43s/it]
 28%|██▊       | 347/1261 [14:03<37:01,  2.43s/it]
 28%|██▊       | 348/1261 [14:05<36:58,  2.43s/it]
 28%|██▊       | 349/1261 [14:08<36:56,  2.43s/it]
 28%|██▊       | 350/1261 [14:10<36:53,  2.43s/it]
 28%|██▊       | 351/1261 [14:12<36:51,  2.43s/it]
 28%|██▊       | 352/1261 [14:15<36:48,  2.43s/it]
 28%|██▊       | 353/1261 [14:17<36:45,  2.43s/it]
 28%|██▊       | 354/1261 [14:20<36:43,  2.43s/it]
 28%|██▊       | 355/1261 [14:22<36:41,  2.43s/it]
 28%|██▊       | 356/1261 [14:25<36:39,  2.43s/it]
 28%|██▊       | 357/1261 [14:27<36:36,  2.43s/it]
 28%|██▊       | 358/1261 [14:29<36:34,  2.43s/it]
 28%|██▊       | 359/1261 [14:32<36:31,  2.43s/it]
 29%|██▊       | 360/1261 [14:34<36:29,  2.43s/it]
 29%|██▊       | 361/1261 [14:37<36:27,  2.43s/it]
 29%|██▊       | 362/1261 [14:39<36:25,  2.43s/it]
 29%|██▉       | 363/1261 [14:42<36:22,  2.43s/it]
 29%|██▉       | 364/1261 [14:44<36:20,  2.43s/it]
 29%|██▉       | 365/1261 [14:47<36:18,  2.43s/it]
 29%|██▉       | 366/1261 [14:49<36:16,  2.43s/it]
 29%|██▉       | 367/1261 [14:52<36:14,  2.43s/it]
 29%|██▉       | 368/1261 [14:54<36:11,  2.43s/it]
 29%|██▉       | 369/1261 [14:57<36:09,  2.43s/it]
 29%|██▉       | 370/1261 [15:00<36:07,  2.43s/it]
 29%|██▉       | 371/1261 [15:03<36:06,  2.43s/it]
 30%|██▉       | 372/1261 [15:05<36:03,  2.43s/it]
 30%|██▉       | 373/1261 [15:08<36:01,  2.43s/it]
 30%|██▉       | 374/1261 [15:10<35:59,  2.43s/it]
 30%|██▉       | 375/1261 [15:13<35:57,  2.44s/it]
 30%|██▉       | 376/1261 [15:15<35:55,  2.44s/it]
 30%|██▉       | 377/1261 [15:18<35:54,  2.44s/it]
 30%|██▉       | 378/1261 [15:21<35:51,  2.44s/it]
 30%|███       | 379/1261 [15:23<35:49,  2.44s/it]
 30%|███       | 380/1261 [15:26<35:47,  2.44s/it]
 30%|███       | 381/1261 [15:28<35:44,  2.44s/it]
 30%|███       | 382/1261 [15:31<35:42,  2.44s/it]
 30%|███       | 383/1261 [15:33<35:40,  2.44s/it]
 30%|███       | 384/1261 [15:36<35:37,  2.44s/it]
 31%|███       | 385/1261 [15:38<35:35,  2.44s/it]
 31%|███       | 386/1261 [15:41<35:33,  2.44s/it]
 31%|███       | 387/1261 [15:43<35:30,  2.44s/it]
 31%|███       | 388/1261 [15:45<35:28,  2.44s/it]
 31%|███       | 389/1261 [15:48<35:25,  2.44s/it]
 31%|███       | 390/1261 [15:50<35:23,  2.44s/it]
 31%|███       | 391/1261 [15:53<35:22,  2.44s/it]
 31%|███       | 392/1261 [15:56<35:20,  2.44s/it]
 31%|███       | 393/1261 [15:59<35:18,  2.44s/it]
 31%|███       | 394/1261 [16:01<35:16,  2.44s/it]
 31%|███▏      | 395/1261 [16:04<35:14,  2.44s/it]
 31%|███▏      | 396/1261 [16:07<35:12,  2.44s/it]
 31%|███▏      | 397/1261 [16:09<35:09,  2.44s/it]
 32%|███▏      | 398/1261 [16:11<35:07,  2.44s/it]
 32%|███▏      | 399/1261 [16:14<35:06,  2.44s/it]
 32%|███▏      | 400/1261 [16:17<35:04,  2.44s/it]
 32%|███▏      | 401/1261 [16:20<35:01,  2.44s/it]
 32%|███▏      | 402/1261 [16:22<34:59,  2.44s/it]
 32%|███▏      | 403/1261 [16:25<34:57,  2.44s/it]
 32%|███▏      | 404/1261 [16:27<34:55,  2.44s/it]
 32%|███▏      | 405/1261 [16:30<34:52,  2.44s/it]
 32%|███▏      | 406/1261 [16:32<34:50,  2.44s/it]
 32%|███▏      | 407/1261 [16:35<34:48,  2.45s/it]
 32%|███▏      | 408/1261 [16:37<34:45,  2.45s/it]
 32%|███▏      | 409/1261 [16:40<34:43,  2.45s/it]
 33%|███▎      | 410/1261 [16:42<34:40,  2.45s/it]
 33%|███▎      | 411/1261 [16:45<34:38,  2.45s/it]
 33%|███▎      | 412/1261 [16:47<34:36,  2.45s/it]
 33%|███▎      | 413/1261 [16:49<34:33,  2.45s/it]
 33%|███▎      | 414/1261 [16:52<34:31,  2.45s/it]
 33%|███▎      | 415/1261 [16:54<34:28,  2.45s/it]
 33%|███▎      | 416/1261 [16:57<34:26,  2.45s/it]
 33%|███▎      | 417/1261 [16:59<34:23,  2.45s/it]
 33%|███▎      | 418/1261 [17:02<34:21,  2.45s/it]
 33%|███▎      | 419/1261 [17:04<34:19,  2.45s/it]
 33%|███▎      | 420/1261 [17:07<34:16,  2.45s/it]
 33%|███▎      | 421/1261 [17:09<34:14,  2.45s/it]
 33%|███▎      | 422/1261 [17:12<34:11,  2.45s/it]
 34%|███▎      | 423/1261 [17:14<34:09,  2.45s/it]
 34%|███▎      | 424/1261 [17:16<34:06,  2.45s/it]
 34%|███▎      | 425/1261 [17:19<34:04,  2.45s/it]
 34%|███▍      | 426/1261 [17:21<34:02,  2.45s/it]
 34%|███▍      | 427/1261 [17:24<33:59,  2.45s/it]
 34%|███▍      | 428/1261 [17:26<33:57,  2.45s/it]
 34%|███▍      | 429/1261 [17:29<33:54,  2.45s/it]
 34%|███▍      | 430/1261 [17:31<33:52,  2.45s/it]
 34%|███▍      | 431/1261 [17:33<33:49,  2.45s/it]
 34%|███▍      | 432/1261 [17:36<33:47,  2.45s/it]
 34%|███▍      | 433/1261 [17:38<33:45,  2.45s/it]
 34%|███▍      | 434/1261 [17:41<33:42,  2.45s/it]
 34%|███▍      | 435/1261 [17:44<33:40,  2.45s/it]
 35%|███▍      | 436/1261 [17:46<33:38,  2.45s/it]
 35%|███▍      | 437/1261 [17:48<33:35,  2.45s/it]
 35%|███▍      | 438/1261 [17:51<33:33,  2.45s/it]
 35%|███▍      | 439/1261 [17:53<33:30,  2.45s/it]
 35%|███▍      | 440/1261 [17:56<33:28,  2.45s/it]
 35%|███▍      | 441/1261 [17:58<33:25,  2.45s/it]
 35%|███▌      | 442/1261 [18:01<33:23,  2.45s/it]
 35%|███▌      | 443/1261 [18:03<33:21,  2.45s/it]
 35%|███▌      | 444/1261 [18:06<33:19,  2.45s/it]
 35%|███▌      | 445/1261 [18:09<33:17,  2.45s/it]
 35%|███▌      | 446/1261 [18:11<33:14,  2.45s/it]
 35%|███▌      | 447/1261 [18:14<33:12,  2.45s/it]
 36%|███▌      | 448/1261 [18:16<33:10,  2.45s/it]
 36%|███▌      | 449/1261 [18:19<33:08,  2.45s/it]
 36%|███▌      | 450/1261 [18:22<33:06,  2.45s/it]
 36%|███▌      | 451/1261 [18:24<33:04,  2.45s/it]
 36%|███▌      | 452/1261 [18:27<33:01,  2.45s/it]
 36%|███▌      | 453/1261 [18:29<32:59,  2.45s/it]
 36%|███▌      | 454/1261 [18:32<32:57,  2.45s/it]
 36%|███▌      | 455/1261 [18:34<32:54,  2.45s/it]
 36%|███▌      | 456/1261 [18:37<32:52,  2.45s/it]
 36%|███▌      | 457/1261 [18:39<32:49,  2.45s/it]
 36%|███▋      | 458/1261 [18:41<32:47,  2.45s/it]
 36%|███▋      | 459/1261 [18:44<32:44,  2.45s/it]
 36%|███▋      | 460/1261 [18:46<32:42,  2.45s/it]
 37%|███▋      | 461/1261 [18:49<32:39,  2.45s/it]
 37%|███▋      | 462/1261 [18:51<32:37,  2.45s/it]
 37%|███▋      | 463/1261 [18:54<32:34,  2.45s/it]
 37%|███▋      | 464/1261 [18:56<32:32,  2.45s/it]
 37%|███▋      | 465/1261 [18:59<32:29,  2.45s/it]
 37%|███▋      | 466/1261 [19:01<32:27,  2.45s/it]
 37%|███▋      | 467/1261 [19:03<32:24,  2.45s/it]
 37%|███▋      | 468/1261 [19:06<32:22,  2.45s/it]
 37%|███▋      | 469/1261 [19:08<32:19,  2.45s/it]
 37%|███▋      | 470/1261 [19:11<32:17,  2.45s/it]
 37%|███▋      | 471/1261 [19:13<32:14,  2.45s/it]
 37%|███▋      | 472/1261 [19:16<32:12,  2.45s/it]
 38%|███▊      | 473/1261 [19:18<32:09,  2.45s/it]
 38%|███▊      | 474/1261 [19:20<32:07,  2.45s/it]
 38%|███▊      | 475/1261 [19:23<32:04,  2.45s/it]
 38%|███▊      | 476/1261 [19:25<32:02,  2.45s/it]
 38%|███▊      | 477/1261 [19:28<32:00,  2.45s/it]
 38%|███▊      | 478/1261 [19:30<31:57,  2.45s/it]
 38%|███▊      | 479/1261 [19:33<31:55,  2.45s/it]
 38%|███▊      | 480/1261 [19:35<31:52,  2.45s/it]
 38%|███▊      | 481/1261 [19:37<31:50,  2.45s/it]
 38%|███▊      | 482/1261 [19:40<31:47,  2.45s/it]
 38%|███▊      | 483/1261 [19:42<31:45,  2.45s/it]
 38%|███▊      | 484/1261 [19:45<31:42,  2.45s/it]
 38%|███▊      | 485/1261 [19:47<31:40,  2.45s/it]
 39%|███▊      | 486/1261 [19:50<31:37,  2.45s/it]
 39%|███▊      | 487/1261 [19:52<31:35,  2.45s/it]
 39%|███▊      | 488/1261 [19:55<31:33,  2.45s/it]
 39%|███▉      | 489/1261 [19:57<31:30,  2.45s/it]
 39%|███▉      | 490/1261 [20:00<31:28,  2.45s/it]
 39%|███▉      | 491/1261 [20:02<31:25,  2.45s/it]
 39%|███▉      | 492/1261 [20:04<31:23,  2.45s/it]
 39%|███▉      | 493/1261 [20:07<31:20,  2.45s/it]
 39%|███▉      | 494/1261 [20:09<31:18,  2.45s/it]
 39%|███▉      | 495/1261 [20:12<31:16,  2.45s/it]
 39%|███▉      | 496/1261 [20:14<31:13,  2.45s/it]
 39%|███▉      | 497/1261 [20:17<31:11,  2.45s/it]
 39%|███▉      | 498/1261 [20:19<31:08,  2.45s/it]
 40%|███▉      | 499/1261 [20:22<31:06,  2.45s/it]
 40%|███▉      | 500/1261 [20:24<31:03,  2.45s/it]
 40%|███▉      | 501/1261 [20:26<31:01,  2.45s/it]
 40%|███▉      | 502/1261 [20:29<30:58,  2.45s/it]
 40%|███▉      | 503/1261 [20:31<30:56,  2.45s/it]
 40%|███▉      | 504/1261 [20:34<30:54,  2.45s/it]
 40%|████      | 505/1261 [20:36<30:51,  2.45s/it]
 40%|████      | 506/1261 [20:39<30:49,  2.45s/it]
 40%|████      | 507/1261 [20:41<30:46,  2.45s/it]
 40%|████      | 508/1261 [20:44<30:44,  2.45s/it]
 40%|████      | 509/1261 [20:46<30:41,  2.45s/it]
 40%|████      | 510/1261 [20:49<30:39,  2.45s/it]
 41%|████      | 511/1261 [20:51<30:36,  2.45s/it]
 41%|████      | 512/1261 [20:54<30:34,  2.45s/it]
 41%|████      | 513/1261 [20:56<30:32,  2.45s/it]
 41%|████      | 514/1261 [20:59<30:29,  2.45s/it]
 41%|████      | 515/1261 [21:01<30:27,  2.45s/it]
 41%|████      | 516/1261 [21:04<30:25,  2.45s/it]
 41%|████      | 517/1261 [21:06<30:22,  2.45s/it]
 41%|████      | 518/1261 [21:08<30:20,  2.45s/it]
 41%|████      | 519/1261 [21:11<30:17,  2.45s/it]
 41%|████      | 520/1261 [21:13<30:15,  2.45s/it]
 41%|████▏     | 521/1261 [21:16<30:12,  2.45s/it]
 41%|████▏     | 522/1261 [21:18<30:10,  2.45s/it]
 41%|████▏     | 523/1261 [21:21<30:07,  2.45s/it]
 42%|████▏     | 524/1261 [21:23<30:05,  2.45s/it]
 42%|████▏     | 525/1261 [21:25<30:02,  2.45s/it]
 42%|████▏     | 526/1261 [21:28<30:00,  2.45s/it]
 42%|████▏     | 527/1261 [21:30<29:57,  2.45s/it]
 42%|████▏     | 528/1261 [21:33<29:55,  2.45s/it]
 42%|████▏     | 529/1261 [21:35<29:53,  2.45s/it]
 42%|████▏     | 530/1261 [21:38<29:50,  2.45s/it]
 42%|████▏     | 531/1261 [21:40<29:48,  2.45s/it]
 42%|████▏     | 532/1261 [21:43<29:45,  2.45s/it]
 42%|████▏     | 533/1261 [21:45<29:43,  2.45s/it]
 42%|████▏     | 534/1261 [21:48<29:40,  2.45s/it]
 42%|████▏     | 535/1261 [21:50<29:38,  2.45s/it]
 43%|████▎     | 536/1261 [21:52<29:35,  2.45s/it]
 43%|████▎     | 537/1261 [21:55<29:33,  2.45s/it]
 43%|████▎     | 538/1261 [21:57<29:30,  2.45s/it]
 43%|████▎     | 539/1261 [22:00<29:28,  2.45s/it]
 43%|████▎     | 540/1261 [22:02<29:26,  2.45s/it]
 43%|████▎     | 541/1261 [22:05<29:23,  2.45s/it]
 43%|████▎     | 542/1261 [22:07<29:21,  2.45s/it]
 43%|████▎     | 543/1261 [22:10<29:18,  2.45s/it]
 43%|████▎     | 544/1261 [22:12<29:16,  2.45s/it]
 43%|████▎     | 545/1261 [22:15<29:14,  2.45s/it]
 43%|████▎     | 546/1261 [22:17<29:11,  2.45s/it]
 43%|████▎     | 547/1261 [22:20<29:09,  2.45s/it]
 43%|████▎     | 548/1261 [22:22<29:07,  2.45s/it]
 44%|████▎     | 549/1261 [22:25<29:04,  2.45s/it]
 44%|████▎     | 550/1261 [22:27<29:02,  2.45s/it]
 44%|████▎     | 551/1261 [22:30<28:59,  2.45s/it]
 44%|████▍     | 552/1261 [22:32<28:57,  2.45s/it]
 44%|████▍     | 553/1261 [22:35<28:55,  2.45s/it]
 44%|████▍     | 554/1261 [22:37<28:52,  2.45s/it]
 44%|████▍     | 555/1261 [22:40<28:50,  2.45s/it]
 44%|████▍     | 556/1261 [22:42<28:47,  2.45s/it]
 44%|████▍     | 557/1261 [22:44<28:45,  2.45s/it]
 44%|████▍     | 558/1261 [22:47<28:42,  2.45s/it]
 44%|████▍     | 559/1261 [22:49<28:40,  2.45s/it]
 44%|████▍     | 560/1261 [22:52<28:37,  2.45s/it]
 44%|████▍     | 561/1261 [22:54<28:35,  2.45s/it]
 45%|████▍     | 562/1261 [22:57<28:32,  2.45s/it]
 45%|████▍     | 563/1261 [22:59<28:30,  2.45s/it]
 45%|████▍     | 564/1261 [23:02<28:28,  2.45s/it]
 45%|████▍     | 565/1261 [23:04<28:25,  2.45s/it]
 45%|████▍     | 566/1261 [23:07<28:23,  2.45s/it]
 45%|████▍     | 567/1261 [23:09<28:20,  2.45s/it]
 45%|████▌     | 568/1261 [23:11<28:18,  2.45s/it]
 45%|████▌     | 569/1261 [23:14<28:15,  2.45s/it]
 45%|████▌     | 570/1261 [23:16<28:13,  2.45s/it]
 45%|████▌     | 571/1261 [23:19<28:11,  2.45s/it]
 45%|████▌     | 572/1261 [23:21<28:08,  2.45s/it]
 45%|████▌     | 573/1261 [23:24<28:06,  2.45s/it]
 46%|████▌     | 574/1261 [23:26<28:03,  2.45s/it]
 46%|████▌     | 575/1261 [23:29<28:01,  2.45s/it]
 46%|████▌     | 576/1261 [23:32<27:59,  2.45s/it]
 46%|████▌     | 577/1261 [23:34<27:57,  2.45s/it]
 46%|████▌     | 578/1261 [23:37<27:54,  2.45s/it]
 46%|████▌     | 579/1261 [23:39<27:51,  2.45s/it]
 46%|████▌     | 580/1261 [23:41<27:49,  2.45s/it]
 46%|████▌     | 581/1261 [23:44<27:46,  2.45s/it]
 46%|████▌     | 582/1261 [23:46<27:44,  2.45s/it]
 46%|████▌     | 583/1261 [23:49<27:42,  2.45s/it]
 46%|████▋     | 584/1261 [23:51<27:39,  2.45s/it]
 46%|████▋     | 585/1261 [23:54<27:37,  2.45s/it]
 46%|████▋     | 586/1261 [23:57<27:35,  2.45s/it]
 47%|████▋     | 587/1261 [23:59<27:33,  2.45s/it]
 47%|████▋     | 588/1261 [24:02<27:30,  2.45s/it]
 47%|████▋     | 589/1261 [24:04<27:28,  2.45s/it]
 47%|████▋     | 590/1261 [24:06<27:25,  2.45s/it]
 47%|████▋     | 591/1261 [24:09<27:23,  2.45s/it]
 47%|████▋     | 592/1261 [24:11<27:20,  2.45s/it]
 47%|████▋     | 593/1261 [24:14<27:18,  2.45s/it]
 47%|████▋     | 594/1261 [24:16<27:15,  2.45s/it]
 47%|████▋     | 595/1261 [24:19<27:13,  2.45s/it]
 47%|████▋     | 596/1261 [24:22<27:11,  2.45s/it]
 47%|████▋     | 597/1261 [24:24<27:09,  2.45s/it]
 47%|████▋     | 598/1261 [24:27<27:06,  2.45s/it]
 48%|████▊     | 599/1261 [24:29<27:04,  2.45s/it]
 48%|████▊     | 600/1261 [24:32<27:02,  2.45s/it]
 48%|████▊     | 601/1261 [24:34<26:59,  2.45s/it]
 48%|████▊     | 602/1261 [24:37<26:57,  2.45s/it]
 48%|████▊     | 603/1261 [24:40<26:55,  2.45s/it]
 48%|████▊     | 604/1261 [24:42<26:52,  2.46s/it]
 48%|████▊     | 605/1261 [24:45<26:50,  2.46s/it]
 48%|████▊     | 606/1261 [24:47<26:48,  2.46s/it]
 48%|████▊     | 607/1261 [24:50<26:45,  2.46s/it]
 48%|████▊     | 608/1261 [24:52<26:43,  2.46s/it]
 48%|████▊     | 609/1261 [24:55<26:41,  2.46s/it]
 48%|████▊     | 610/1261 [24:58<26:38,  2.46s/it]
 48%|████▊     | 611/1261 [25:00<26:36,  2.46s/it]
 49%|████▊     | 612/1261 [25:03<26:34,  2.46s/it]
 49%|████▊     | 613/1261 [25:05<26:31,  2.46s/it]
 49%|████▊     | 614/1261 [25:08<26:29,  2.46s/it]
 49%|████▉     | 615/1261 [25:10<26:26,  2.46s/it]
 49%|████▉     | 616/1261 [25:13<26:24,  2.46s/it]
 49%|████▉     | 617/1261 [25:15<26:22,  2.46s/it]
 49%|████▉     | 618/1261 [25:18<26:19,  2.46s/it]
 49%|████▉     | 619/1261 [25:20<26:17,  2.46s/it]
 49%|████▉     | 620/1261 [25:23<26:14,  2.46s/it]
 49%|████▉     | 621/1261 [25:25<26:12,  2.46s/it]
 49%|████▉     | 622/1261 [25:28<26:10,  2.46s/it]
 49%|████▉     | 623/1261 [25:30<26:07,  2.46s/it]
 49%|████▉     | 624/1261 [25:33<26:05,  2.46s/it]
 50%|████▉     | 625/1261 [25:35<26:03,  2.46s/it]
 50%|████▉     | 626/1261 [25:38<26:00,  2.46s/it]
 50%|████▉     | 627/1261 [25:41<25:58,  2.46s/it]
 50%|████▉     | 628/1261 [25:43<25:55,  2.46s/it]
 50%|████▉     | 629/1261 [25:46<25:53,  2.46s/it]
 50%|████▉     | 630/1261 [25:49<25:51,  2.46s/it]
 50%|█████     | 631/1261 [25:52<25:49,  2.46s/it]
 50%|█████     | 632/1261 [25:54<25:47,  2.46s/it]
 50%|█████     | 633/1261 [25:57<25:44,  2.46s/it]
 50%|█████     | 634/1261 [25:59<25:42,  2.46s/it]
 50%|█████     | 635/1261 [26:02<25:39,  2.46s/it]
 50%|█████     | 636/1261 [26:04<25:37,  2.46s/it]
 51%|█████     | 637/1261 [26:06<25:34,  2.46s/it]
 51%|█████     | 638/1261 [26:09<25:32,  2.46s/it]
 51%|█████     | 639/1261 [26:11<25:29,  2.46s/it]
 51%|█████     | 640/1261 [26:14<25:27,  2.46s/it]
 51%|█████     | 641/1261 [26:16<25:24,  2.46s/it]
 51%|█████     | 642/1261 [26:18<25:22,  2.46s/it]
 51%|█████     | 643/1261 [26:21<25:19,  2.46s/it]
 51%|█████     | 644/1261 [26:23<25:17,  2.46s/it]
 51%|█████     | 645/1261 [26:26<25:14,  2.46s/it]
 51%|█████     | 646/1261 [26:28<25:12,  2.46s/it]
 51%|█████▏    | 647/1261 [26:31<25:10,  2.46s/it]
 51%|█████▏    | 648/1261 [26:33<25:07,  2.46s/it]
 51%|█████▏    | 649/1261 [26:36<25:05,  2.46s/it]
 52%|█████▏    | 650/1261 [26:38<25:02,  2.46s/it]
 52%|█████▏    | 651/1261 [26:41<25:00,  2.46s/it]
 52%|█████▏    | 652/1261 [26:43<24:57,  2.46s/it]
 52%|█████▏    | 653/1261 [26:45<24:55,  2.46s/it]
 52%|█████▏    | 654/1261 [26:48<24:52,  2.46s/it]
 52%|█████▏    | 655/1261 [26:50<24:50,  2.46s/it]
 52%|█████▏    | 656/1261 [26:53<24:47,  2.46s/it]
 52%|█████▏    | 657/1261 [26:55<24:45,  2.46s/it]
 52%|█████▏    | 658/1261 [26:58<24:42,  2.46s/it]
 52%|█████▏    | 659/1261 [27:00<24:40,  2.46s/it]
 52%|█████▏    | 660/1261 [27:02<24:37,  2.46s/it]
 52%|█████▏    | 661/1261 [27:05<24:35,  2.46s/it]
 52%|█████▏    | 662/1261 [27:07<24:33,  2.46s/it]
 53%|█████▎    | 663/1261 [27:10<24:30,  2.46s/it]
 53%|█████▎    | 664/1261 [27:12<24:28,  2.46s/it]
 53%|█████▎    | 665/1261 [27:15<24:25,  2.46s/it]
 53%|█████▎    | 666/1261 [27:17<24:23,  2.46s/it]
 53%|█████▎    | 667/1261 [27:20<24:20,  2.46s/it]
 53%|█████▎    | 668/1261 [27:22<24:18,  2.46s/it]
 53%|█████▎    | 669/1261 [27:25<24:15,  2.46s/it]
 53%|█████▎    | 670/1261 [27:27<24:13,  2.46s/it]
 53%|█████▎    | 671/1261 [27:30<24:11,  2.46s/it]
 53%|█████▎    | 672/1261 [27:32<24:08,  2.46s/it]
 53%|█████▎    | 673/1261 [27:35<24:06,  2.46s/it]
 53%|█████▎    | 674/1261 [27:38<24:04,  2.46s/it]
 54%|█████▎    | 675/1261 [27:40<24:01,  2.46s/it]
 54%|█████▎    | 676/1261 [27:43<23:59,  2.46s/it]
 54%|█████▎    | 677/1261 [27:45<23:57,  2.46s/it]
 54%|█████▍    | 678/1261 [27:48<23:54,  2.46s/it]
 54%|█████▍    | 679/1261 [27:51<23:52,  2.46s/it]
 54%|█████▍    | 680/1261 [27:53<23:50,  2.46s/it]
 54%|█████▍    | 681/1261 [27:56<23:47,  2.46s/it]
 54%|█████▍    | 682/1261 [27:58<23:45,  2.46s/it]
 54%|█████▍    | 683/1261 [28:01<23:42,  2.46s/it]
 54%|█████▍    | 684/1261 [28:03<23:40,  2.46s/it]
 54%|█████▍    | 685/1261 [28:06<23:38,  2.46s/it]
 54%|█████▍    | 686/1261 [28:09<23:36,  2.46s/it]
 54%|█████▍    | 687/1261 [28:12<23:33,  2.46s/it]
 55%|█████▍    | 688/1261 [28:14<23:31,  2.46s/it]
 55%|█████▍    | 689/1261 [28:17<23:29,  2.46s/it]
 55%|█████▍    | 690/1261 [28:19<23:26,  2.46s/it]
 55%|█████▍    | 691/1261 [28:22<23:24,  2.46s/it]
 55%|█████▍    | 692/1261 [28:25<23:21,  2.46s/it]
 55%|█████▍    | 693/1261 [28:27<23:19,  2.46s/it]
 55%|█████▌    | 694/1261 [28:30<23:17,  2.47s/it]
 55%|█████▌    | 695/1261 [28:33<23:15,  2.47s/it]
 55%|█████▌    | 696/1261 [28:35<23:12,  2.47s/it]
 55%|█████▌    | 697/1261 [28:38<23:10,  2.47s/it]
 55%|█████▌    | 698/1261 [28:40<23:08,  2.47s/it]
 55%|█████▌    | 699/1261 [28:43<23:05,  2.47s/it]
 56%|█████▌    | 700/1261 [28:45<23:03,  2.47s/it]
 56%|█████▌    | 701/1261 [28:48<23:00,  2.47s/it]
 56%|█████▌    | 702/1261 [28:50<22:58,  2.47s/it]
 56%|█████▌    | 703/1261 [28:53<22:55,  2.47s/it]
 56%|█████▌    | 704/1261 [28:55<22:53,  2.47s/it]
 56%|█████▌    | 705/1261 [28:58<22:50,  2.47s/it]
 56%|█████▌    | 706/1261 [29:00<22:48,  2.47s/it]
 56%|█████▌    | 707/1261 [29:03<22:46,  2.47s/it]
 56%|█████▌    | 708/1261 [29:06<22:43,  2.47s/it]
 56%|█████▌    | 709/1261 [29:08<22:41,  2.47s/it]
 56%|█████▋    | 710/1261 [29:11<22:39,  2.47s/it]
 56%|█████▋    | 711/1261 [29:14<22:37,  2.47s/it]
 56%|█████▋    | 712/1261 [29:16<22:34,  2.47s/it]
 57%|█████▋    | 713/1261 [29:19<22:32,  2.47s/it]
 57%|█████▋    | 714/1261 [29:21<22:29,  2.47s/it]
 57%|█████▋    | 715/1261 [29:24<22:27,  2.47s/it]
 57%|█████▋    | 716/1261 [29:26<22:24,  2.47s/it]
 57%|█████▋    | 717/1261 [29:28<22:22,  2.47s/it]
 57%|█████▋    | 718/1261 [29:31<22:19,  2.47s/it]
 57%|█████▋    | 719/1261 [29:33<22:17,  2.47s/it]
 57%|█████▋    | 720/1261 [29:36<22:14,  2.47s/it]
 57%|█████▋    | 721/1261 [29:39<22:12,  2.47s/it]
 57%|█████▋    | 722/1261 [29:41<22:10,  2.47s/it]
 57%|█████▋    | 723/1261 [29:44<22:07,  2.47s/it]
 57%|█████▋    | 724/1261 [29:46<22:05,  2.47s/it]
 57%|█████▋    | 725/1261 [29:49<22:02,  2.47s/it]
 58%|█████▊    | 726/1261 [29:51<22:00,  2.47s/it]
 58%|█████▊    | 727/1261 [29:54<21:58,  2.47s/it]
 58%|█████▊    | 728/1261 [29:56<21:55,  2.47s/it]
 58%|█████▊    | 729/1261 [29:59<21:53,  2.47s/it]
 58%|█████▊    | 730/1261 [30:01<21:50,  2.47s/it]
 58%|█████▊    | 731/1261 [30:04<21:48,  2.47s/it]
 58%|█████▊    | 732/1261 [30:06<21:45,  2.47s/it]
 58%|█████▊    | 733/1261 [30:09<21:43,  2.47s/it]
 58%|█████▊    | 734/1261 [30:11<21:40,  2.47s/it]
 58%|█████▊    | 735/1261 [30:14<21:38,  2.47s/it]
 58%|█████▊    | 736/1261 [30:16<21:35,  2.47s/it]
 58%|█████▊    | 737/1261 [30:19<21:33,  2.47s/it]
 59%|█████▊    | 738/1261 [30:22<21:31,  2.47s/it]
 59%|█████▊    | 739/1261 [30:25<21:29,  2.47s/it]
 59%|█████▊    | 740/1261 [30:28<21:27,  2.47s/it]
 59%|█████▉    | 741/1261 [30:30<21:24,  2.47s/it]
 59%|█████▉    | 742/1261 [30:33<21:22,  2.47s/it]
 59%|█████▉    | 743/1261 [30:35<21:19,  2.47s/it]
 59%|█████▉    | 744/1261 [30:38<21:17,  2.47s/it]
 59%|█████▉    | 745/1261 [30:41<21:15,  2.47s/it]
 59%|█████▉    | 746/1261 [30:43<21:12,  2.47s/it]
 59%|█████▉    | 747/1261 [30:45<21:10,  2.47s/it]
 59%|█████▉    | 748/1261 [30:48<21:07,  2.47s/it]
 59%|█████▉    | 749/1261 [30:50<21:05,  2.47s/it]
 59%|█████▉    | 750/1261 [30:53<21:02,  2.47s/it]
 60%|█████▉    | 751/1261 [30:55<21:00,  2.47s/it]
 60%|█████▉    | 752/1261 [30:58<20:57,  2.47s/it]
 60%|█████▉    | 753/1261 [31:00<20:55,  2.47s/it]
 60%|█████▉    | 754/1261 [31:02<20:52,  2.47s/it]
 60%|█████▉    | 755/1261 [31:05<20:50,  2.47s/it]
 60%|█████▉    | 756/1261 [31:07<20:47,  2.47s/it]
 60%|██████    | 757/1261 [31:10<20:45,  2.47s/it]
 60%|██████    | 758/1261 [31:12<20:42,  2.47s/it]
 60%|██████    | 759/1261 [31:15<20:40,  2.47s/it]
 60%|██████    | 760/1261 [31:17<20:37,  2.47s/it]
 60%|██████    | 761/1261 [31:19<20:35,  2.47s/it]
 60%|██████    | 762/1261 [31:22<20:32,  2.47s/it]
 61%|██████    | 763/1261 [31:24<20:30,  2.47s/it]
 61%|██████    | 764/1261 [31:27<20:27,  2.47s/it]
 61%|██████    | 765/1261 [31:29<20:25,  2.47s/it]
 61%|██████    | 766/1261 [31:31<20:22,  2.47s/it]
 61%|██████    | 767/1261 [31:34<20:20,  2.47s/it]
 61%|██████    | 768/1261 [31:36<20:17,  2.47s/it]
 61%|██████    | 769/1261 [31:39<20:14,  2.47s/it]
 61%|██████    | 770/1261 [31:41<20:12,  2.47s/it]
 61%|██████    | 771/1261 [31:43<20:09,  2.47s/it]
 61%|██████    | 772/1261 [31:46<20:07,  2.47s/it]
 61%|██████▏   | 773/1261 [31:48<20:04,  2.47s/it]
 61%|██████▏   | 774/1261 [31:51<20:02,  2.47s/it]
 61%|██████▏   | 775/1261 [31:53<19:59,  2.47s/it]
 62%|██████▏   | 776/1261 [31:55<19:57,  2.47s/it]
 62%|██████▏   | 777/1261 [31:58<19:54,  2.47s/it]
 62%|██████▏   | 778/1261 [32:00<19:52,  2.47s/it]
 62%|██████▏   | 779/1261 [32:03<19:49,  2.47s/it]
 62%|██████▏   | 780/1261 [32:05<19:47,  2.47s/it]
 62%|██████▏   | 781/1261 [32:07<19:44,  2.47s/it]
 62%|██████▏   | 782/1261 [32:10<19:42,  2.47s/it]
 62%|██████▏   | 783/1261 [32:12<19:39,  2.47s/it]
 62%|██████▏   | 784/1261 [32:14<19:37,  2.47s/it]
 62%|██████▏   | 785/1261 [32:17<19:34,  2.47s/it]
 62%|██████▏   | 786/1261 [32:19<19:32,  2.47s/it]
 62%|██████▏   | 787/1261 [32:22<19:29,  2.47s/it]
 62%|██████▏   | 788/1261 [32:24<19:27,  2.47s/it]
 63%|██████▎   | 789/1261 [32:27<19:24,  2.47s/it]
 63%|██████▎   | 790/1261 [32:29<19:22,  2.47s/it]
 63%|██████▎   | 791/1261 [32:31<19:19,  2.47s/it]
 63%|██████▎   | 792/1261 [32:34<19:17,  2.47s/it]
 63%|██████▎   | 793/1261 [32:36<19:14,  2.47s/it]
 63%|██████▎   | 794/1261 [32:38<19:12,  2.47s/it]
 63%|██████▎   | 795/1261 [32:41<19:09,  2.47s/it]
 63%|██████▎   | 796/1261 [32:43<19:07,  2.47s/it]
 63%|██████▎   | 797/1261 [32:46<19:04,  2.47s/it]
 63%|██████▎   | 798/1261 [32:48<19:02,  2.47s/it]
 63%|██████▎   | 799/1261 [32:51<18:59,  2.47s/it]
 63%|██████▎   | 800/1261 [32:53<18:57,  2.47s/it]
 64%|██████▎   | 801/1261 [32:56<18:54,  2.47s/it]
 64%|██████▎   | 802/1261 [32:58<18:52,  2.47s/it]
 64%|██████▎   | 803/1261 [33:01<18:49,  2.47s/it]
 64%|██████▍   | 804/1261 [33:03<18:47,  2.47s/it]
 64%|██████▍   | 805/1261 [33:05<18:44,  2.47s/it]
 64%|██████▍   | 806/1261 [33:08<18:42,  2.47s/it]
 64%|██████▍   | 807/1261 [33:10<18:39,  2.47s/it]
 64%|██████▍   | 808/1261 [33:13<18:37,  2.47s/it]
 64%|██████▍   | 809/1261 [33:15<18:34,  2.47s/it]
 64%|██████▍   | 810/1261 [33:17<18:32,  2.47s/it]
 64%|██████▍   | 811/1261 [33:20<18:29,  2.47s/it]
 64%|██████▍   | 812/1261 [33:22<18:27,  2.47s/it]
 64%|██████▍   | 813/1261 [33:25<18:24,  2.47s/it]
 65%|██████▍   | 814/1261 [33:27<18:22,  2.47s/it]
 65%|██████▍   | 815/1261 [33:29<18:19,  2.47s/it]
 65%|██████▍   | 816/1261 [33:32<18:17,  2.47s/it]
 65%|██████▍   | 817/1261 [33:34<18:14,  2.47s/it]
 65%|██████▍   | 818/1261 [33:37<18:12,  2.47s/it]
 65%|██████▍   | 819/1261 [33:39<18:09,  2.47s/it]
 65%|██████▌   | 820/1261 [33:41<18:07,  2.47s/it]
 65%|██████▌   | 821/1261 [33:44<18:04,  2.47s/it]
 65%|██████▌   | 822/1261 [33:46<18:02,  2.47s/it]
 65%|██████▌   | 823/1261 [33:49<17:59,  2.47s/it]
 65%|██████▌   | 824/1261 [33:51<17:57,  2.47s/it]
 65%|██████▌   | 825/1261 [33:53<17:54,  2.47s/it]
 66%|██████▌   | 826/1261 [33:56<17:52,  2.47s/it]
 66%|██████▌   | 827/1261 [33:58<17:49,  2.47s/it]
 66%|██████▌   | 828/1261 [34:00<17:47,  2.46s/it]
 66%|██████▌   | 829/1261 [34:03<17:44,  2.46s/it]
 66%|██████▌   | 830/1261 [34:05<17:42,  2.46s/it]
 66%|██████▌   | 831/1261 [34:08<17:39,  2.46s/it]
 66%|██████▌   | 832/1261 [34:10<17:37,  2.46s/it]
 66%|██████▌   | 833/1261 [34:13<17:35,  2.47s/it]
 66%|██████▌   | 834/1261 [34:16<17:32,  2.47s/it]
 66%|██████▌   | 835/1261 [34:18<17:30,  2.47s/it]
 66%|██████▋   | 836/1261 [34:22<17:28,  2.47s/it]
 66%|██████▋   | 837/1261 [34:24<17:25,  2.47s/it]
 66%|██████▋   | 838/1261 [34:27<17:23,  2.47s/it]
 67%|██████▋   | 839/1261 [34:29<17:20,  2.47s/it]
 67%|██████▋   | 840/1261 [34:32<17:18,  2.47s/it]
 67%|██████▋   | 841/1261 [34:35<17:16,  2.47s/it]
 67%|██████▋   | 842/1261 [34:38<17:14,  2.47s/it]
 67%|██████▋   | 843/1261 [34:40<17:11,  2.47s/it]
 67%|██████▋   | 844/1261 [34:43<17:09,  2.47s/it]
 67%|██████▋   | 845/1261 [34:45<17:06,  2.47s/it]
 67%|██████▋   | 846/1261 [34:48<17:04,  2.47s/it]
 67%|██████▋   | 847/1261 [34:51<17:02,  2.47s/it]
 67%|██████▋   | 848/1261 [34:54<16:59,  2.47s/it]
 67%|██████▋   | 849/1261 [34:56<16:57,  2.47s/it]
 67%|██████▋   | 850/1261 [34:59<16:55,  2.47s/it]
 67%|██████▋   | 851/1261 [35:02<16:52,  2.47s/it]
 68%|██████▊   | 852/1261 [35:04<16:50,  2.47s/it]
 68%|██████▊   | 853/1261 [35:07<16:48,  2.47s/it]
 68%|██████▊   | 854/1261 [35:10<16:45,  2.47s/it]
 68%|██████▊   | 855/1261 [35:12<16:43,  2.47s/it]
 68%|██████▊   | 856/1261 [35:15<16:40,  2.47s/it]
 68%|██████▊   | 857/1261 [35:17<16:38,  2.47s/it]
 68%|██████▊   | 858/1261 [35:19<16:35,  2.47s/it]
 68%|██████▊   | 859/1261 [35:22<16:33,  2.47s/it]
 68%|██████▊   | 860/1261 [35:24<16:30,  2.47s/it]
 68%|██████▊   | 861/1261 [35:27<16:28,  2.47s/it]
 68%|██████▊   | 862/1261 [35:30<16:26,  2.47s/it]
 68%|██████▊   | 863/1261 [35:32<16:23,  2.47s/it]
 69%|██████▊   | 864/1261 [35:35<16:21,  2.47s/it]
 69%|██████▊   | 865/1261 [35:37<16:18,  2.47s/it]
 69%|██████▊   | 866/1261 [35:40<16:16,  2.47s/it]
 69%|██████▉   | 867/1261 [35:42<16:13,  2.47s/it]
 69%|██████▉   | 868/1261 [35:45<16:11,  2.47s/it]
 69%|██████▉   | 869/1261 [35:47<16:08,  2.47s/it]
 69%|██████▉   | 870/1261 [35:50<16:06,  2.47s/it]
 69%|██████▉   | 871/1261 [35:52<16:03,  2.47s/it]
 69%|██████▉   | 872/1261 [35:55<16:01,  2.47s/it]
 69%|██████▉   | 873/1261 [35:57<15:59,  2.47s/it]
 69%|██████▉   | 874/1261 [36:00<15:56,  2.47s/it]
 69%|██████▉   | 875/1261 [36:03<15:54,  2.47s/it]
 69%|██████▉   | 876/1261 [36:05<15:51,  2.47s/it]
 70%|██████▉   | 877/1261 [36:08<15:49,  2.47s/it]
 70%|██████▉   | 878/1261 [36:11<15:47,  2.47s/it]
 70%|██████▉   | 879/1261 [36:14<15:44,  2.47s/it]
 70%|██████▉   | 880/1261 [36:17<15:42,  2.47s/it]
 70%|██████▉   | 881/1261 [36:20<15:40,  2.48s/it]
 70%|██████▉   | 882/1261 [36:23<15:38,  2.48s/it]
 70%|███████   | 883/1261 [36:26<15:36,  2.48s/it]
 70%|███████   | 884/1261 [36:29<15:33,  2.48s/it]
 70%|███████   | 885/1261 [36:32<15:31,  2.48s/it]
 70%|███████   | 886/1261 [36:34<15:28,  2.48s/it]
 70%|███████   | 887/1261 [36:37<15:26,  2.48s/it]
 70%|███████   | 888/1261 [36:40<15:24,  2.48s/it]
 70%|███████   | 889/1261 [36:42<15:21,  2.48s/it]
 71%|███████   | 890/1261 [36:45<15:19,  2.48s/it]
 71%|███████   | 891/1261 [36:47<15:16,  2.48s/it]
 71%|███████   | 892/1261 [36:50<15:14,  2.48s/it]
 71%|███████   | 893/1261 [36:52<15:11,  2.48s/it]
 71%|███████   | 894/1261 [36:55<15:09,  2.48s/it]
 71%|███████   | 895/1261 [36:57<15:06,  2.48s/it]
 71%|███████   | 896/1261 [37:00<15:04,  2.48s/it]
 71%|███████   | 897/1261 [37:02<15:02,  2.48s/it]
 71%|███████   | 898/1261 [37:05<14:59,  2.48s/it]
 71%|███████▏  | 899/1261 [37:07<14:57,  2.48s/it]
 71%|███████▏  | 900/1261 [37:10<14:54,  2.48s/it]
 71%|███████▏  | 901/1261 [37:12<14:52,  2.48s/it]
 72%|███████▏  | 902/1261 [37:15<14:49,  2.48s/it]
 72%|███████▏  | 903/1261 [37:18<14:47,  2.48s/it]
 72%|███████▏  | 904/1261 [37:20<14:44,  2.48s/it]
 72%|███████▏  | 905/1261 [37:23<14:42,  2.48s/it]
 72%|███████▏  | 906/1261 [37:25<14:39,  2.48s/it]
 72%|███████▏  | 907/1261 [37:28<14:37,  2.48s/it]
 72%|███████▏  | 908/1261 [37:30<14:35,  2.48s/it]
 72%|███████▏  | 909/1261 [37:33<14:32,  2.48s/it]
 72%|███████▏  | 910/1261 [37:36<14:30,  2.48s/it]
 72%|███████▏  | 911/1261 [37:39<14:27,  2.48s/it]
 72%|███████▏  | 912/1261 [37:41<14:25,  2.48s/it]
 72%|███████▏  | 913/1261 [37:44<14:23,  2.48s/it]
 72%|███████▏  | 914/1261 [37:46<14:20,  2.48s/it]
 73%|███████▎  | 915/1261 [37:49<14:18,  2.48s/it]
 73%|███████▎  | 916/1261 [37:52<14:15,  2.48s/it]
 73%|███████▎  | 917/1261 [37:54<14:13,  2.48s/it]
 73%|███████▎  | 918/1261 [37:57<14:10,  2.48s/it]
 73%|███████▎  | 919/1261 [38:00<14:08,  2.48s/it]
 73%|███████▎  | 920/1261 [38:02<14:06,  2.48s/it]
 73%|███████▎  | 921/1261 [38:05<14:03,  2.48s/it]
 73%|███████▎  | 922/1261 [38:08<14:01,  2.48s/it]
 73%|███████▎  | 923/1261 [38:10<13:58,  2.48s/it]
 73%|███████▎  | 924/1261 [38:13<13:56,  2.48s/it]
 73%|███████▎  | 925/1261 [38:16<13:54,  2.48s/it]
 73%|███████▎  | 926/1261 [38:18<13:51,  2.48s/it]
 74%|███████▎  | 927/1261 [38:22<13:49,  2.48s/it]
 74%|███████▎  | 928/1261 [38:24<13:47,  2.48s/it]
 74%|███████▎  | 929/1261 [38:27<13:44,  2.48s/it]
 74%|███████▍  | 930/1261 [38:30<13:42,  2.48s/it]
 74%|███████▍  | 931/1261 [38:33<13:39,  2.48s/it]
 74%|███████▍  | 932/1261 [38:35<13:37,  2.48s/it]
 74%|███████▍  | 933/1261 [38:38<13:35,  2.49s/it]
 74%|███████▍  | 934/1261 [38:41<13:32,  2.49s/it]
 74%|███████▍  | 935/1261 [38:44<13:30,  2.49s/it]
 74%|███████▍  | 936/1261 [38:46<13:27,  2.49s/it]
 74%|███████▍  | 937/1261 [38:49<13:25,  2.49s/it]
 74%|███████▍  | 938/1261 [38:51<13:22,  2.49s/it]
 74%|███████▍  | 939/1261 [38:54<13:20,  2.49s/it]
 75%|███████▍  | 940/1261 [38:56<13:17,  2.49s/it]
 75%|███████▍  | 941/1261 [38:59<13:15,  2.49s/it]
 75%|███████▍  | 942/1261 [39:01<13:12,  2.49s/it]
 75%|███████▍  | 943/1261 [39:04<13:10,  2.49s/it]
 75%|███████▍  | 944/1261 [39:06<13:08,  2.49s/it]
 75%|███████▍  | 945/1261 [39:09<13:05,  2.49s/it]
 75%|███████▌  | 946/1261 [39:11<13:03,  2.49s/it]
 75%|███████▌  | 947/1261 [39:14<13:00,  2.49s/it]
 75%|███████▌  | 948/1261 [39:16<12:58,  2.49s/it]
 75%|███████▌  | 949/1261 [39:19<12:55,  2.49s/it]
 75%|███████▌  | 950/1261 [39:21<12:53,  2.49s/it]
 75%|███████▌  | 951/1261 [39:24<12:50,  2.49s/it]
 75%|███████▌  | 952/1261 [39:26<12:48,  2.49s/it]
 76%|███████▌  | 953/1261 [39:29<12:45,  2.49s/it]
 76%|███████▌  | 954/1261 [39:31<12:43,  2.49s/it]
 76%|███████▌  | 955/1261 [39:33<12:40,  2.49s/it]
 76%|███████▌  | 956/1261 [39:36<12:38,  2.49s/it]
 76%|███████▌  | 957/1261 [39:38<12:35,  2.49s/it]
 76%|███████▌  | 958/1261 [39:41<12:33,  2.49s/it]
 76%|███████▌  | 959/1261 [39:43<12:30,  2.49s/it]
 76%|███████▌  | 960/1261 [39:46<12:28,  2.49s/it]
 76%|███████▌  | 961/1261 [39:48<12:25,  2.49s/it]
 76%|███████▋  | 962/1261 [39:50<12:23,  2.49s/it]
 76%|███████▋  | 963/1261 [39:53<12:20,  2.49s/it]
 76%|███████▋  | 964/1261 [39:55<12:18,  2.49s/it]
 77%|███████▋  | 965/1261 [39:58<12:15,  2.49s/it]
 77%|███████▋  | 966/1261 [40:00<12:13,  2.49s/it]
 77%|███████▋  | 967/1261 [40:03<12:10,  2.49s/it]
 77%|███████▋  | 968/1261 [40:05<12:08,  2.48s/it]
 77%|███████▋  | 969/1261 [40:07<12:05,  2.48s/it]
 77%|███████▋  | 970/1261 [40:10<12:03,  2.48s/it]
 77%|███████▋  | 971/1261 [40:12<12:00,  2.48s/it]
 77%|███████▋  | 972/1261 [40:14<11:58,  2.48s/it]
 77%|███████▋  | 973/1261 [40:17<11:55,  2.48s/it]
 77%|███████▋  | 974/1261 [40:20<11:53,  2.48s/it]
 77%|███████▋  | 975/1261 [40:22<11:50,  2.48s/it]
 77%|███████▋  | 976/1261 [40:25<11:48,  2.48s/it]
 77%|███████▋  | 977/1261 [40:27<11:45,  2.48s/it]
 78%|███████▊  | 978/1261 [40:30<11:43,  2.48s/it]
 78%|███████▊  | 979/1261 [40:32<11:40,  2.48s/it]
 78%|███████▊  | 980/1261 [40:35<11:38,  2.48s/it]
 78%|███████▊  | 981/1261 [40:37<11:35,  2.48s/it]
 78%|███████▊  | 982/1261 [40:40<11:33,  2.48s/it]
 78%|███████▊  | 983/1261 [40:42<11:30,  2.49s/it]
 78%|███████▊  | 984/1261 [40:45<11:28,  2.49s/it]
 78%|███████▊  | 985/1261 [40:47<11:25,  2.49s/it]
 78%|███████▊  | 986/1261 [40:50<11:23,  2.49s/it]
 78%|███████▊  | 987/1261 [40:52<11:20,  2.49s/it]
 78%|███████▊  | 988/1261 [40:55<11:18,  2.49s/it]
 78%|███████▊  | 989/1261 [40:57<11:15,  2.49s/it]
 79%|███████▊  | 990/1261 [41:00<11:13,  2.49s/it]
 79%|███████▊  | 991/1261 [41:03<11:11,  2.49s/it]
 79%|███████▊  | 992/1261 [41:06<11:08,  2.49s/it]
 79%|███████▊  | 993/1261 [41:09<11:06,  2.49s/it]
 79%|███████▉  | 994/1261 [41:12<11:04,  2.49s/it]
 79%|███████▉  | 995/1261 [41:15<11:01,  2.49s/it]
 79%|███████▉  | 996/1261 [41:18<10:59,  2.49s/it]
 79%|███████▉  | 997/1261 [41:21<10:57,  2.49s/it]
 79%|███████▉  | 998/1261 [41:24<10:54,  2.49s/it]
 79%|███████▉  | 999/1261 [41:27<10:52,  2.49s/it]
 79%|███████▉  | 1000/1261 [41:30<10:49,  2.49s/it]
 79%|███████▉  | 1001/1261 [41:32<10:47,  2.49s/it]
 79%|███████▉  | 1002/1261 [41:35<10:45,  2.49s/it]
 80%|███████▉  | 1003/1261 [41:38<10:42,  2.49s/it]
 80%|███████▉  | 1004/1261 [41:41<10:40,  2.49s/it]
 80%|███████▉  | 1005/1261 [41:44<10:37,  2.49s/it]
 80%|███████▉  | 1006/1261 [41:47<10:35,  2.49s/it]
 80%|███████▉  | 1007/1261 [41:50<10:33,  2.49s/it]
 80%|███████▉  | 1008/1261 [41:52<10:30,  2.49s/it]
 80%|████████  | 1009/1261 [41:55<10:28,  2.49s/it]
 80%|████████  | 1010/1261 [41:58<10:25,  2.49s/it]
 80%|████████  | 1011/1261 [42:00<10:23,  2.49s/it]
 80%|████████  | 1012/1261 [42:03<10:20,  2.49s/it]
 80%|████████  | 1013/1261 [42:05<10:18,  2.49s/it]
 80%|████████  | 1014/1261 [42:08<10:15,  2.49s/it]
 80%|████████  | 1015/1261 [42:10<10:13,  2.49s/it]
 81%|████████  | 1016/1261 [42:13<10:10,  2.49s/it]
 81%|████████  | 1017/1261 [42:16<10:08,  2.49s/it]
 81%|████████  | 1018/1261 [42:19<10:06,  2.49s/it]
 81%|████████  | 1019/1261 [42:22<10:03,  2.49s/it]
 81%|████████  | 1020/1261 [42:25<10:01,  2.50s/it]
 81%|████████  | 1021/1261 [42:27<09:58,  2.50s/it]
 81%|████████  | 1022/1261 [42:30<09:56,  2.50s/it]
 81%|████████  | 1023/1261 [42:32<09:53,  2.50s/it]
 81%|████████  | 1024/1261 [42:35<09:51,  2.50s/it]
 81%|████████▏ | 1025/1261 [42:38<09:49,  2.50s/it]
 81%|████████▏ | 1026/1261 [42:41<09:46,  2.50s/it]
 81%|████████▏ | 1027/1261 [42:44<09:44,  2.50s/it]
 82%|████████▏ | 1028/1261 [42:46<09:41,  2.50s/it]
 82%|████████▏ | 1029/1261 [42:49<09:39,  2.50s/it]
 82%|████████▏ | 1030/1261 [42:52<09:36,  2.50s/it]
 82%|████████▏ | 1031/1261 [42:54<09:34,  2.50s/it]
 82%|████████▏ | 1032/1261 [42:57<09:32,  2.50s/it]
 82%|████████▏ | 1033/1261 [43:00<09:29,  2.50s/it]
 82%|████████▏ | 1034/1261 [43:03<09:27,  2.50s/it]
 82%|████████▏ | 1035/1261 [43:06<09:24,  2.50s/it]
 82%|████████▏ | 1036/1261 [43:10<09:22,  2.50s/it]
 82%|████████▏ | 1037/1261 [43:12<09:20,  2.50s/it]
 82%|████████▏ | 1038/1261 [43:16<09:17,  2.50s/it]
 82%|████████▏ | 1039/1261 [43:18<09:15,  2.50s/it]
 82%|████████▏ | 1040/1261 [43:21<09:12,  2.50s/it]
 83%|████████▎ | 1041/1261 [43:24<09:10,  2.50s/it]
 83%|████████▎ | 1042/1261 [43:28<09:08,  2.50s/it]
 83%|████████▎ | 1043/1261 [43:31<09:05,  2.50s/it]
 83%|████████▎ | 1044/1261 [43:34<09:03,  2.50s/it]
 83%|████████▎ | 1045/1261 [43:37<09:01,  2.50s/it]
 83%|████████▎ | 1046/1261 [43:40<08:58,  2.51s/it]
 83%|████████▎ | 1047/1261 [43:44<08:56,  2.51s/it]
 83%|████████▎ | 1048/1261 [43:47<08:54,  2.51s/it]
 83%|████████▎ | 1049/1261 [43:50<08:51,  2.51s/it]
 83%|████████▎ | 1050/1261 [43:53<08:49,  2.51s/it]
 83%|████████▎ | 1051/1261 [43:56<08:46,  2.51s/it]
 83%|████████▎ | 1052/1261 [43:59<08:44,  2.51s/it]
 84%|████████▎ | 1053/1261 [44:02<08:42,  2.51s/it]
 84%|████████▎ | 1054/1261 [44:06<08:39,  2.51s/it]
 84%|████████▎ | 1055/1261 [44:09<08:37,  2.51s/it]
 84%|████████▎ | 1056/1261 [44:12<08:34,  2.51s/it]
 84%|████████▍ | 1057/1261 [44:15<08:32,  2.51s/it]
 84%|████████▍ | 1058/1261 [44:18<08:30,  2.51s/it]
 84%|████████▍ | 1059/1261 [44:21<08:27,  2.51s/it]
 84%|████████▍ | 1060/1261 [44:25<08:25,  2.51s/it]
 84%|████████▍ | 1061/1261 [44:28<08:22,  2.51s/it]
 84%|████████▍ | 1062/1261 [44:31<08:20,  2.52s/it]
 84%|████████▍ | 1063/1261 [44:34<08:18,  2.52s/it]
 84%|████████▍ | 1064/1261 [44:37<08:15,  2.52s/it]
 84%|████████▍ | 1065/1261 [44:40<08:13,  2.52s/it]
 85%|████████▍ | 1066/1261 [44:43<08:10,  2.52s/it]
 85%|████████▍ | 1067/1261 [44:47<08:08,  2.52s/it]
 85%|████████▍ | 1068/1261 [44:49<08:06,  2.52s/it]
 85%|████████▍ | 1069/1261 [44:53<08:03,  2.52s/it]
 85%|████████▍ | 1070/1261 [44:56<08:01,  2.52s/it]
 85%|████████▍ | 1071/1261 [44:59<07:58,  2.52s/it]
 85%|████████▌ | 1072/1261 [45:02<07:56,  2.52s/it]
 85%|████████▌ | 1073/1261 [45:05<07:54,  2.52s/it]
 85%|████████▌ | 1074/1261 [45:08<07:51,  2.52s/it]
 85%|████████▌ | 1075/1261 [45:12<07:49,  2.52s/it]
 85%|████████▌ | 1076/1261 [45:15<07:46,  2.52s/it]
 85%|████████▌ | 1077/1261 [45:18<07:44,  2.52s/it]
 85%|████████▌ | 1078/1261 [45:21<07:42,  2.52s/it]
 86%|████████▌ | 1079/1261 [45:24<07:39,  2.53s/it]
 86%|████████▌ | 1080/1261 [45:27<07:37,  2.53s/it]
 86%|████████▌ | 1081/1261 [45:30<07:34,  2.53s/it]
 86%|████████▌ | 1082/1261 [45:33<07:32,  2.53s/it]
 86%|████████▌ | 1083/1261 [45:36<07:29,  2.53s/it]
 86%|████████▌ | 1084/1261 [45:39<07:27,  2.53s/it]
 86%|████████▌ | 1085/1261 [45:43<07:24,  2.53s/it]
 86%|████████▌ | 1086/1261 [45:46<07:22,  2.53s/it]
 86%|████████▌ | 1087/1261 [45:49<07:20,  2.53s/it]
 86%|████████▋ | 1088/1261 [45:53<07:17,  2.53s/it]
 86%|████████▋ | 1089/1261 [45:56<07:15,  2.53s/it]
 86%|████████▋ | 1090/1261 [45:59<07:12,  2.53s/it]
 87%|████████▋ | 1091/1261 [46:03<07:10,  2.53s/it]
 87%|████████▋ | 1092/1261 [46:06<07:08,  2.53s/it]
 87%|████████▋ | 1093/1261 [46:09<07:05,  2.53s/it]
 87%|████████▋ | 1094/1261 [46:11<07:03,  2.53s/it]
 87%|████████▋ | 1095/1261 [46:15<07:00,  2.53s/it]
 87%|████████▋ | 1096/1261 [46:17<06:58,  2.53s/it]
 87%|████████▋ | 1097/1261 [46:20<06:55,  2.53s/it]
 87%|████████▋ | 1098/1261 [46:22<06:53,  2.53s/it]
 87%|████████▋ | 1099/1261 [46:25<06:50,  2.53s/it]
 87%|████████▋ | 1100/1261 [46:27<06:47,  2.53s/it]
 87%|████████▋ | 1101/1261 [46:29<06:45,  2.53s/it]
 87%|████████▋ | 1102/1261 [46:32<06:42,  2.53s/it]
 87%|████████▋ | 1103/1261 [46:34<06:40,  2.53s/it]
 88%|████████▊ | 1104/1261 [46:37<06:37,  2.53s/it]
 88%|████████▊ | 1105/1261 [46:39<06:35,  2.53s/it]
 88%|████████▊ | 1106/1261 [46:41<06:32,  2.53s/it]
 88%|████████▊ | 1107/1261 [46:44<06:30,  2.53s/it]
 88%|████████▊ | 1108/1261 [46:46<06:27,  2.53s/it]
 88%|████████▊ | 1109/1261 [46:49<06:25,  2.53s/it]
 88%|████████▊ | 1110/1261 [46:51<06:22,  2.53s/it]
 88%|████████▊ | 1111/1261 [46:53<06:19,  2.53s/it]
 88%|████████▊ | 1112/1261 [46:56<06:17,  2.53s/it]
 88%|████████▊ | 1113/1261 [46:58<06:14,  2.53s/it]
 88%|████████▊ | 1114/1261 [47:01<06:12,  2.53s/it]
 88%|████████▊ | 1115/1261 [47:03<06:09,  2.53s/it]
 89%|████████▊ | 1116/1261 [47:05<06:07,  2.53s/it]
 89%|████████▊ | 1117/1261 [47:08<06:04,  2.53s/it]
 89%|████████▊ | 1118/1261 [47:10<06:02,  2.53s/it]
 89%|████████▊ | 1119/1261 [47:13<05:59,  2.53s/it]
 89%|████████▉ | 1120/1261 [47:15<05:56,  2.53s/it]
 89%|████████▉ | 1121/1261 [47:17<05:54,  2.53s/it]
 89%|████████▉ | 1122/1261 [47:20<05:51,  2.53s/it]
 89%|████████▉ | 1123/1261 [47:23<05:49,  2.53s/it]
 89%|████████▉ | 1124/1261 [47:25<05:46,  2.53s/it]
 89%|████████▉ | 1125/1261 [47:28<05:44,  2.53s/it]
 89%|████████▉ | 1126/1261 [47:31<05:41,  2.53s/it]
 89%|████████▉ | 1127/1261 [47:34<05:39,  2.53s/it]
 89%|████████▉ | 1128/1261 [47:36<05:36,  2.53s/it]
 90%|████████▉ | 1129/1261 [47:39<05:34,  2.53s/it]
 90%|████████▉ | 1130/1261 [47:41<05:31,  2.53s/it]
 90%|████████▉ | 1131/1261 [47:44<05:29,  2.53s/it]
 90%|████████▉ | 1132/1261 [47:46<05:26,  2.53s/it]
 90%|████████▉ | 1133/1261 [47:48<05:24,  2.53s/it]
 90%|████████▉ | 1134/1261 [47:51<05:21,  2.53s/it]
 90%|█████████ | 1135/1261 [47:54<05:19,  2.53s/it]
 90%|█████████ | 1136/1261 [47:57<05:16,  2.53s/it]
 90%|█████████ | 1137/1261 [47:59<05:14,  2.53s/it]
 90%|█████████ | 1138/1261 [48:02<05:11,  2.53s/it]
 90%|█████████ | 1139/1261 [48:04<05:08,  2.53s/it]
 90%|█████████ | 1140/1261 [48:07<05:06,  2.53s/it]
 90%|█████████ | 1141/1261 [48:09<05:03,  2.53s/it]
 91%|█████████ | 1142/1261 [48:11<05:01,  2.53s/it]
 91%|█████████ | 1143/1261 [48:14<04:58,  2.53s/it]
 91%|█████████ | 1144/1261 [48:16<04:56,  2.53s/it]
 91%|█████████ | 1145/1261 [48:19<04:53,  2.53s/it]
 91%|█████████ | 1146/1261 [48:22<04:51,  2.53s/it]
 91%|█████████ | 1147/1261 [48:24<04:48,  2.53s/it]
 91%|█████████ | 1148/1261 [48:26<04:46,  2.53s/it]
 91%|█████████ | 1149/1261 [48:29<04:43,  2.53s/it]
 91%|█████████ | 1150/1261 [48:31<04:41,  2.53s/it]
 91%|█████████▏| 1151/1261 [48:34<04:38,  2.53s/it]
 91%|█████████▏| 1152/1261 [48:36<04:35,  2.53s/it]
 91%|█████████▏| 1153/1261 [48:39<04:33,  2.53s/it]
 92%|█████████▏| 1154/1261 [48:41<04:30,  2.53s/it]
 92%|█████████▏| 1155/1261 [48:44<04:28,  2.53s/it]
 92%|█████████▏| 1156/1261 [48:46<04:25,  2.53s/it]
 92%|█████████▏| 1157/1261 [48:49<04:23,  2.53s/it]
 92%|█████████▏| 1158/1261 [48:51<04:20,  2.53s/it]
 92%|█████████▏| 1159/1261 [48:54<04:18,  2.53s/it]
 92%|█████████▏| 1160/1261 [48:56<04:15,  2.53s/it]
 92%|█████████▏| 1161/1261 [48:58<04:13,  2.53s/it]
 92%|█████████▏| 1162/1261 [49:01<04:10,  2.53s/it]
 92%|█████████▏| 1163/1261 [49:03<04:08,  2.53s/it]
 92%|█████████▏| 1164/1261 [49:06<04:05,  2.53s/it]
 92%|█████████▏| 1165/1261 [49:09<04:03,  2.53s/it]
 92%|█████████▏| 1166/1261 [49:11<04:00,  2.53s/it]
 93%|█████████▎| 1167/1261 [49:14<03:57,  2.53s/it]
 93%|█████████▎| 1168/1261 [49:16<03:55,  2.53s/it]
 93%|█████████▎| 1169/1261 [49:18<03:52,  2.53s/it]
 93%|█████████▎| 1170/1261 [49:21<03:50,  2.53s/it]
 93%|█████████▎| 1171/1261 [49:23<03:47,  2.53s/it]
 93%|█████████▎| 1172/1261 [49:26<03:45,  2.53s/it]
 93%|█████████▎| 1173/1261 [49:28<03:42,  2.53s/it]
 93%|█████████▎| 1174/1261 [49:31<03:40,  2.53s/it]
 93%|█████████▎| 1175/1261 [49:33<03:37,  2.53s/it]
 93%|█████████▎| 1176/1261 [49:35<03:35,  2.53s/it]
 93%|█████████▎| 1177/1261 [49:38<03:32,  2.53s/it]
 93%|█████████▎| 1178/1261 [49:40<03:30,  2.53s/it]
 93%|█████████▎| 1179/1261 [49:43<03:27,  2.53s/it]
 94%|█████████▎| 1180/1261 [49:45<03:24,  2.53s/it]
 94%|█████████▎| 1181/1261 [49:48<03:22,  2.53s/it]
 94%|█████████▎| 1182/1261 [49:51<03:19,  2.53s/it]
 94%|█████████▍| 1183/1261 [49:54<03:17,  2.53s/it]
 94%|█████████▍| 1184/1261 [49:57<03:14,  2.53s/it]
 94%|█████████▍| 1185/1261 [50:00<03:12,  2.53s/it]
 94%|█████████▍| 1186/1261 [50:03<03:09,  2.53s/it]
 94%|█████████▍| 1187/1261 [50:06<03:07,  2.53s/it]
 94%|█████████▍| 1188/1261 [50:09<03:04,  2.53s/it]
 94%|█████████▍| 1189/1261 [50:11<03:02,  2.53s/it]
 94%|█████████▍| 1190/1261 [50:14<02:59,  2.53s/it]
 94%|█████████▍| 1191/1261 [50:17<02:57,  2.53s/it]
 95%|█████████▍| 1192/1261 [50:20<02:54,  2.53s/it]
 95%|█████████▍| 1193/1261 [50:23<02:52,  2.53s/it]
 95%|█████████▍| 1194/1261 [50:26<02:49,  2.53s/it]
 95%|█████████▍| 1195/1261 [50:29<02:47,  2.54s/it]
 95%|█████████▍| 1196/1261 [50:31<02:44,  2.54s/it]
 95%|█████████▍| 1197/1261 [50:34<02:42,  2.54s/it]
 95%|█████████▌| 1198/1261 [50:37<02:39,  2.54s/it]
 95%|█████████▌| 1199/1261 [50:40<02:37,  2.54s/it]
 95%|█████████▌| 1200/1261 [50:42<02:34,  2.54s/it]
 95%|█████████▌| 1201/1261 [50:45<02:32,  2.54s/it]
 95%|█████████▌| 1202/1261 [50:48<02:29,  2.54s/it]
 95%|█████████▌| 1203/1261 [50:50<02:27,  2.54s/it]
 95%|█████████▌| 1204/1261 [50:53<02:24,  2.54s/it]
 96%|█████████▌| 1205/1261 [50:56<02:22,  2.54s/it]
 96%|█████████▌| 1206/1261 [50:58<02:19,  2.54s/it]
 96%|█████████▌| 1207/1261 [51:01<02:16,  2.54s/it]
 96%|█████████▌| 1208/1261 [51:03<02:14,  2.54s/it]
 96%|█████████▌| 1209/1261 [51:06<02:11,  2.54s/it]
 96%|█████████▌| 1210/1261 [51:08<02:09,  2.54s/it]
 96%|█████████▌| 1211/1261 [51:10<02:06,  2.54s/it]
 96%|█████████▌| 1212/1261 [51:13<02:04,  2.54s/it]
 96%|█████████▌| 1213/1261 [51:16<02:01,  2.54s/it]
 96%|█████████▋| 1214/1261 [51:19<01:59,  2.54s/it]
 96%|█████████▋| 1215/1261 [51:22<01:56,  2.54s/it]
 96%|█████████▋| 1216/1261 [51:24<01:54,  2.54s/it]
 97%|█████████▋| 1217/1261 [51:27<01:51,  2.54s/it]
 97%|█████████▋| 1218/1261 [51:30<01:49,  2.54s/it]
 97%|█████████▋| 1219/1261 [51:32<01:46,  2.54s/it]
 97%|█████████▋| 1220/1261 [51:35<01:44,  2.54s/it]
 97%|█████████▋| 1221/1261 [51:38<01:41,  2.54s/it]
 97%|█████████▋| 1222/1261 [51:41<01:38,  2.54s/it]
 97%|█████████▋| 1223/1261 [51:43<01:36,  2.54s/it]
 97%|█████████▋| 1224/1261 [51:46<01:33,  2.54s/it]
 97%|█████████▋| 1225/1261 [51:48<01:31,  2.54s/it]
 97%|█████████▋| 1226/1261 [51:51<01:28,  2.54s/it]
 97%|█████████▋| 1227/1261 [51:53<01:26,  2.54s/it]
 97%|█████████▋| 1228/1261 [51:56<01:23,  2.54s/it]
 97%|█████████▋| 1229/1261 [51:58<01:21,  2.54s/it]
 98%|█████████▊| 1230/1261 [52:01<01:18,  2.54s/it]
 98%|█████████▊| 1231/1261 [52:04<01:16,  2.54s/it]
 98%|█████████▊| 1232/1261 [52:06<01:13,  2.54s/it]
 98%|█████████▊| 1233/1261 [52:09<01:11,  2.54s/it]
 98%|█████████▊| 1234/1261 [52:11<01:08,  2.54s/it]
 98%|█████████▊| 1235/1261 [52:14<01:05,  2.54s/it]
 98%|█████████▊| 1236/1261 [52:16<01:03,  2.54s/it]
 98%|█████████▊| 1237/1261 [52:19<01:00,  2.54s/it]
 98%|█████████▊| 1238/1261 [52:22<00:58,  2.54s/it]
 98%|█████████▊| 1239/1261 [52:24<00:55,  2.54s/it]
 98%|█████████▊| 1240/1261 [52:27<00:53,  2.54s/it]
 98%|█████████▊| 1241/1261 [52:29<00:50,  2.54s/it]
 98%|█████████▊| 1242/1261 [52:31<00:48,  2.54s/it]
 99%|█████████▊| 1243/1261 [52:34<00:45,  2.54s/it]
 99%|█████████▊| 1244/1261 [52:36<00:43,  2.54s/it]
 99%|█████████▊| 1245/1261 [52:39<00:40,  2.54s/it]
 99%|█████████▉| 1246/1261 [52:41<00:38,  2.54s/it]
 99%|█████████▉| 1247/1261 [52:44<00:35,  2.54s/it]
 99%|█████████▉| 1248/1261 [52:46<00:32,  2.54s/it]
 99%|█████████▉| 1249/1261 [52:48<00:30,  2.54s/it]
 99%|█████████▉| 1250/1261 [52:51<00:27,  2.54s/it]
 99%|█████████▉| 1251/1261 [52:53<00:25,  2.54s/it]
 99%|█████████▉| 1252/1261 [52:55<00:22,  2.54s/it]
 99%|█████████▉| 1253/1261 [52:58<00:20,  2.54s/it]
 99%|█████████▉| 1254/1261 [53:00<00:17,  2.54s/it]
100%|█████████▉| 1255/1261 [53:03<00:15,  2.54s/it]
100%|█████████▉| 1256/1261 [53:05<00:12,  2.54s/it]
100%|█████████▉| 1257/1261 [53:07<00:10,  2.54s/it]
100%|█████████▉| 1258/1261 [53:10<00:07,  2.54s/it]
100%|█████████▉| 1259/1261 [53:12<00:05,  2.54s/it]
100%|█████████▉| 1260/1261 [53:15<00:02,  2.54s/it]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output_heatmap.mp4 

CPU times: user 51min 31s, sys: 1min 46s, total: 53min 17s
Wall time: 53min 15s
In [195]:
fig, axs = plt.subplots(3,2, figsize=(10, 20))
axs = axs.ravel()

for i, image_p in enumerate(glob.glob('test_images/rear_end*.png')):
    img = mpimg.imread(image_p)
    img_out = rear_end_pipeline(img)
    axs[i].imshow(img_out)